Jsf 2 使用时未找到方法<;p:remoteCommand>;jsf2.0中的按钮
我得到了上面的错误,即使我明确提到了方法 我添加了Jsf 2 使用时未找到方法<;p:remoteCommand>;jsf2.0中的按钮,jsf-2,Jsf 2,我得到了上面的错误,即使我明确提到了方法 我添加了 我有控制器方法 javax.faces.FacesException: #{searchAction.searchMasterId}: javax.el.MethodNotFoundException: /files/search.xhtml @186,176 action="#{searchAction.searchMasterId}": Method not found: com.action.SearchAction@1130c0a.se
我有控制器方法
javax.faces.FacesException: #{searchAction.searchMasterId}: javax.el.MethodNotFoundException: /files/search.xhtml @186,176 action="#{searchAction.searchMasterId}": Method not found: com.action.SearchAction@1130c0a.searchMasterId()
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:85)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:334)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1221)
如果您运行的是EL 2.2,则有机会在代码中使用任意参数调用任意方法,如:
public String getSearchMasterId() {
//some code
return SUCCESS;
}
使用JSF
public void doMyMethod() { ... };
public void doMyMethodWithParameters(String p1, int p2) { ... };
//note that 'private String doMyMethod' property is unnecessary
public String getDoMyMethod() { return ...; }
注意结尾的括号:()
。如果您不编写它们,JSF将尝试访问所提供名称的属性,而不管它是否存在:
#{bean.doMyMethod()}
#{bean.doMyMethodWithParameters(p1, p2)}
使用JSF
public void doMyMethod() { ... };
public void doMyMethodWithParameters(String p1, int p2) { ... };
//note that 'private String doMyMethod' property is unnecessary
public String getDoMyMethod() { return ...; }
注意EL中末尾缺少括号和get
谓词{bean.doMyMethod}
将调用bean.getDoMyMethod()
并返回相关字符串
在本例中,您需要以以下方式访问该方法:{searchAction.getSearchMasterId()}
最后,值得注意的是,在某些情况下(action方法、action listener方法、AJAX行为方法等),不需要同时包含括号和方法参数,因为JSF需要一个具有适当参数的方法,并且会自行设置
使用这个函数,它会在不使用括号的情况下产生相同的结果:{searchAction.getSearchMasterId}
还值得注意的是,您可能会将执行业务逻辑或预设某些值的操作方法与获取要在JSF组件中显示的值的方法混淆。为什么不显示有问题的方法?如果您绝对肯定它具有正确的签名,那么很可能意味着您没有运行您认为正在运行的代码。清理/重建/重新部署/重新启动。@BalusC添加了方法代码。谢谢,谢谢。访问控制器方法和托管bean属性getter方法之间有什么区别吗?如果我使用
{searchAction.searchMasterId}
访问控制器方法,为什么它不工作。它在托管bean中工作得非常好。