Pregunta ¿Cómo usar && en expresiones EL booleanas en Facelets?


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 Traced [line: 69] El nombre de la entidad debe seguir inmediatamente al '&'   en la referencia de la entidad


75
2017-12-18 15:59


origen


Respuestas:


Facelets es una tecnología de visualización basada en XML. los & es un personaje especial en XML que representa el comienzo 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 el and palabra clave en su lugar, que se prefiere en cuanto a legibilidad y facilidad de mantenimiento:

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

Ver también:


No relacionado para 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}"

143
2017-12-18 16:03



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.


4
2018-03-14 16:15