【问题标题】:javax.servlet.ServletException: Unable to find method xyz with [0] parameters - Value expression vs method expressionjavax.servlet.ServletException:无法找到带有 [0] 参数的方法 xyz - 值表达式与方法表达式
【发布时间】:2017-05-31 08:33:01
【问题描述】:

所以我对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 中实现代码?

我的问题与this one 非常相似,但在链接中它是一个静态方法,而我的不是。

【问题讨论】:

    标签: el jsf-2.2


    【解决方案1】:

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

    【讨论】:

    • 现在公开它会出现以下错误:javax.servlet.ServletException: /researcher/index.xhtml @61,119 render="#{researcherQueriesBean.getFilterTerms.size() > 0}": Property '在 myPackage.myBean 类型上找不到 getFilterTerms
    【解决方案2】:

    您的 EL 在引用属性时不应使用“get”或方括号“()”

    请改用以下内容:

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

    注意小写的“f”

    【讨论】:

      猜你喜欢
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-30
      相关资源
      最近更新 更多