template jsf facelets el

jsf - template - ¿Cómo usar && en expresiones EL booleanas en Facelets?



ui composition (2)

Me está costando un poco descifrar cómo hacerlo y sobre las expresiones EL en Facelets. Así que, básicamente, tengo:

<h:outputText id="Prompt" value="Fobar" rendered="#{beanA.prompt == true && beanB.currentBase !=null}" />

Pero sigo recibiendo:

Error trazado [línea: 69] El nombre de la entidad debe seguir inmediatamente el ''&'' en la referencia de la entidad.


Además de la respuesta de BalusC, use el siguiente Java RegExp para reemplazar && con and :

Search: (#/{[^/}]*)(&&)([^/}]*/}) Replace: $1and$3

Ha ejecutado esta sustitución de expresiones regulares varias veces para encontrar todas las ocurrencias en caso de que esté utilizando> 2 literales en sus expresiones EL. Tenga en cuenta que debe reemplazar el # por $ si su sintaxis de expresión EL es diferente.


Facelets es una tecnología de visualización basada en XML. El & es un personaje especial en XML que representa el inicio de una entidad como &amp; que termina con el ; personaje. Tendría que escapar, lo cual es feo:

rendered="#{beanA.prompt == true &amp;&amp; beanB.currentBase != null}"

o para usar la palabra clave and lugar, que se prefiere en cuanto a legibilidad y facilidad de mantenimiento:

rendered="#{beanA.prompt == true and beanB.currentBase != null}"

Ver también:

Sin relación con el problema concreto, la comparación de booleanos con booleanos tiene poco sentido cuando la expresión ya espera un resultado booleano. Me desharía de == true :

rendered="#{beanA.prompt and beanB.currentBase != null}"