2017-01-16 59 views
-1

所以我對jsf中使用值表達式和方法表達式感到困惑。我對這兩個術語的理解是:javax.servlet.ServletException:找不到[0]參數的方法xyz - 值表達式與方法表達式

  • 如果它具有getter和setter函數的bean的屬性,它將被稱爲值表達式。
  • 如果它是一個類的常規方法,而不是它稱爲方法表達式的屬性(因此不包含getter或setter)。

請糾正我,如果這是錯誤的。

現在我很困惑這兩個如何在jsf頁面中使用。

我的豆具有類似的方法:

@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. 如果不是,我是否必須創建一個 filterterms的bean屬性,然後在getter和setters中實現代碼?

我的問題與this one非常相似,但在鏈接中它的靜態方法,而我的不是。

回答

0

您已將方法getFilterTerms定義爲私有。

+0

現在公開它給出了以下錯誤: javax.servlet.ServletException:/researcher/index.xhtml @ 61,119 rendered =「#{researcherQueriesBean.getFilterTerms.size()> 0}」:在myPackage類型中找不到屬性'getFilterTerms' .myBean – rehas

0

你EL不應該使用 「get」 或括號 「()」,指物業時

使用以下代替:

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

注意小寫的 「F」