2011-08-22 61 views
15

我有一個outputText字段,我在其中編寫了條件rendered屬性。條件是將字符串的長度與某個數值進行比較。在渲染屬性中使用大於邏輯表達式

<h:outputText id="emailaddress" 
    value ="#{subsAlertsHelper.personEmail.substring(0,20)}" 
    rendered="#{subsAlertsHelper.personEmail.length() >20}" /> 

如果我使用rendered==!=它工作正常。但是,如果不這樣做,它就不會輸出結果。這可能是什麼原因?

回答

1

rendered只接受EL表達。

subsAlertsHelper.personEmail.length()不正確。

在personEmail對象,添加一個方法getLength()女巫返回長度

public int getLength(){ return this. length();} 

修改:

rendered="#{subsAlertsHelper.personEmail.length >20}" 
+0

也嘗試gt rendered =「#{subsAlertsHelper.personEmail.length gt 20}」 –

+3

保持自己最新。閱讀關於2009年12月左右在Servlet 3.0中引入的EL 2.2。由於EL 2.2也帶有參數,因此可以直接調用非getter方法。 – BalusC

+0

我目前只使用JSF 1.2,並且從不需要使用EL 2.2。你是對的。對不起,這個答案...我的評論可能是最合適的(關於使用GT)。 –

39

你必須使用gtlt運營商。

從Sun/Oracle檢出JavaServer Faces Expression Language Intro。正是運營商部分。

+2

確實,原因是'<' and '>'是XHTML中的特殊字符。當你使用JSP時,這會起作用。 – BalusC

+0

什麼是運營商大於等於 –

+1

@Ganesh它是'ge'。查看答案中的鏈接,特別是章節_Operators_。 – timbooo