2011-08-22 8 views
15

Tengo un campo outputText para el que escribo una condición en el atributo rendered. La condición es para comparar la longitud de la cadena con algún valor numérico.utilizando una expresión mayor que la lógica en el atributo representado

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

Si uso == o != en rendered que está funcionando bien. Pero para más grande y menos que no está dando la salida. Cuál podría ser la razón para eso?

Respuesta

1

rendered solo acepta la expresión EL.

subsAlertsHelper.personEmail.length() es incorrecto.

En el objeto de personEmail, añadir una bruja método getLength() devuelve la longitud

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

Modificar:

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

También pruebe gt rendered = "# {subsAlertsHelper.personEmail.length gt 20}" –

+3

Manténgase actualizado. Siga leyendo sobre EL 2.2, que se introdujo con Servlet 3.0 alrededor de diciembre de 2009. Se permite invocar métodos no getter directamente desde EL 2.2, también con argumentos. – BalusC

+0

Actualmente solo uso JSF 1.2 y nunca tengo que trabajar con EL 2.2. Tienes razón. Perdón por esta respuesta ... Mi comentario es probablemente el más apropiado (sobre el uso de gt). –

39

Usted tiene que usar gt y lt operadores.

Echa un vistazo JavaServer Faces Expression Language Intro de Sun/Oracle. Precisamente la sección Operadores.

+2

De hecho, la razón es que '<' and '>' son caracteres especiales en XHTML. Cuando haya usado JSP, esto hubiera funcionado. – BalusC

+0

¿Cuál es el operador para mayor que igual a –

+1

@Ganesh? Es 'ge'. Consulte el enlace de la respuesta, especialmente el capítulo _Operadores_. – timbooo

Cuestiones relacionadas