J'ai un peu de mal à comprendre comment faire et comment utiliser les expressions EL dans Facelets. Donc, fondamentalement, j'ai:
<h:outputText id="Prompt"
value="Fobar"
rendered="#{beanA.Prompt == true && beanB.currentBase !=null}" />
Mais je continue à obtenir:
Error Traced [ligne: 69] Le nom de l'entité doit suivre immédiatement le '&' dans la référence de l'entité.
Facelets est une technologie d'affichage basée sur XML. Le &
est un caractère spécial en XML représentant le début d’une entité comme &
qui se termine par le ;
personnage. Vous devez soit y échapper, ce qui est moche:
rendered="#{beanA.Prompt == true && beanB.currentBase != null}"
ou d'utiliser le mot-clé and
à la place, ce qui est préférable pour la lisibilité et la maintenabilité:
rendered="#{beanA.Prompt == true and beanB.currentBase != null}"
Sans lien avec le problème concret, comparer des booléens à des booléens n'a guère de sens lorsque l'expression attend déjà un résultat booléen. Je me débarrasserais de == true
:
rendered="#{beanA.Prompt and beanB.currentBase != null}"
En plus de la réponse de BalusC, utilisez ce qui suit Java RegExp pour remplacer &&
avec and
:
Search: (#\{[^\}]*)(&&)([^\}]*\})
Replace: $1and$3
Vous avez exécuté ce remplacement d'expressions régulières à plusieurs reprises pour rechercher toutes les occurrences dans le cas où vous utiliseriez plus de 2 littéraux dans vos expressions EL. N'oubliez pas de remplacer le # par le signe $ si la syntaxe de votre expression EL diffère.