Ich habe ein wenig Probleme damit, herauszufinden, wie man EL-Ausdrücke in Facelets verwendet. Also im Grunde habe ich:
<h:outputText id="Prompt"
value="Fobar"
rendered="#{beanA.Prompt == true && beanB.currentBase !=null}" />
Aber ich bekomme immer:
Error Traced [Zeile: 69] Der Entitätsname muss unmittelbar nach dem '&' in der Entitätsreferenz stehen.
Facelets ist eine XML-basierte Ansichtstechnologie. &
Ist ein Sonderzeichen in XML, das den Anfang einer Entität wie &
Darstellt, die mit dem Zeichen ;
Endet. Sie müssten entweder entkommen, was hässlich ist:
rendered="#{beanA.Prompt == true && beanB.currentBase != null}"
oder verwenden Sie stattdessen das Schlüsselwort and
, das aus Gründen der Lesbarkeit und Wartbarkeit bevorzugt wird:
rendered="#{beanA.Prompt == true and beanB.currentBase != null}"
Unrelated Für das konkrete Problem ist der Vergleich von Booleschen Werten mit Booleschen Werten wenig sinnvoll, wenn der Ausdruck bereits ein boolesches Ergebnis erwartet. Ich würde == true
Loswerden:
rendered="#{beanA.Prompt and beanB.currentBase != null}"
Verwenden Sie zusätzlich zur Antwort von BalusC die folgenden Zeichen Java RegExp, um &&
Durch and
zu ersetzen:
Search: (#\{[^\}]*)(&&)([^\}]*\})
Replace: $1and$3
Sie haben diesen Austausch regulärer Ausdrücke mehrmals ausgeführt, um alle Vorkommen zu ermitteln, wenn Sie in Ihren EL-Ausdrücken> 2 Literale verwenden. Denken Sie daran, das führende # durch $ zu ersetzen, wenn sich Ihre EL-Ausdruckssyntax unterscheidet.