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中工作得非常好。