2011-08-22 12 views
15

Ho un campo outputText per il quale scrivo una condizione nell'attributo rendered. La condizione è per confrontare la lunghezza della stringa con un valore numerico.utilizzando maggiore dell'espressione logica nell'attributo di rendering

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

Se uso == o != in rendered si sta lavorando bene. Ma per più grande e meno che non sta dando l'output. Quale potrebbe essere la ragione per questo?

risposta

1

rendered accetta solo espressioni EL.

subsAlertsHelper.personEmail.length() non è corretto.

Sull'oggetto personEmail, aggiungere una strega metodo getLength() restituisce la lunghezza

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

Modifica:

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

Prova anche gt rendered = "# {subsAlertsHelper.personEmail.length gt 20}" –

+3

Tieniti aggiornato. Continua a leggere su EL 2.2 che è stato introdotto con Servlet 3.0 intorno al dicembre 2009. Invocare i metodi non getter direttamente è permesso dal momento che EL 2.2, anche con argomenti. – BalusC

+0

Attualmente utilizzo solo JSF 1.2 e non devo mai lavorare con EL 2.2. Hai ragione. Scusa per questa risposta ... Il mio commento è probabilmente il più appropriato (sull'uso di gt). –

39

Devi usare gt e lt operatori.

Check out JavaServer Faces Expression Language Intro da Sun/Oracle. Precisamente la sezione Operatori.

+2

In effetti, il motivo è che '<' and '>' sono caratteri speciali in XHTML. Quando hai usato JSP, questo avrebbe funzionato. – BalusC

+0

Qual è l'operatore per maggiore di uguale a –

+1

@ Ganesh È 'ge'. Controlla il link dalla risposta, in particolare il capitolo _Operatori_. – timbooo

Problemi correlati