javax.servlet.ServletException:无法使用[0]参数找到方法xyz - 值表达式与方法表达式

时间:2017-01-16 13:26:45

标签: el jsf-2.2

所以我对jsf中使用值表达式和方法表达式感到有点困惑。我对这两个术语的理解是:

  • 如果它是具有getter和setter函数的bean的属性,它将被称为值表达式。
  • 如果它是一个类的常规方法,而不是一个属性(因此没有getter或setter),而不是它所谓的方法表达式。

如果错误,请纠正我。

现在我很困惑这两个如何在jsf页面中使用。

我的bean有一个方法:

@ManagedBean
@ViewScoped
public class myBean implements Serializable {

/*Some bean properties here*/ 

private Set<String> getFilterTerms() {

        /*Some logic here*/

        return filterTerms;
    }
}

我正在尝试渲染一个jsf页面panelGroup,具体取决于上述函数返回的集合的大小。

 <h:panelGroup rendered="#{myBean.getFilterTerms().size() > 0}" layout="block" style="margin-top:60px">

  //Display some html elements here

 </h:panelGroup>

我的代码出现以下错误。

javax.servlet.ServletException: Unable to find method [getFilterTerms] with [0] parameters.
  1. 是否可以按照我的方式使用方法表达式 渲染属性?
  2. 如果没有,我是否必须创建一个bean属性 filterterms,而不是在getter和setter中实现代码?
  3. 我的问题与this one非常相似,但在链接中它是一个静态方法而我的不是。

2 个答案:

答案 0 :(得分:0)

您已将方法getFilterTerms定义为私有。

答案 1 :(得分:0)

你的EL不应该使用&#34; get&#34;或括号&#34;()&#34;在提到财产时

请改用以下内容:

#{myBean.filterTerms.size() > 0}

注意小写&#34; f&#34;