FaceletsでEL式を実行する方法を理解するのに少し苦労しています。だから基本的に私は持っています:
<h:outputText id="Prompt"
value="Fobar"
rendered="#{beanA.Prompt == true && beanB.currentBase !=null}" />
しかし、私は取得し続けます:
エラートレース[行:69]エンティティ名は、エンティティ参照の「&」の直後になければなりません。
Faceletsは、XMLベースのビューテクノロジーです。 &
は、&
文字で終わる;
などのエンティティの開始を表すXMLの 特殊文字 です。あなたはそれをエスケープする必要がありますが、これはいです:
rendered="#{beanA.Prompt == true && beanB.currentBase != null}"
または、代わりにand
キーワードを使用します。これは、読みやすさと保守性の観点から推奨されます。
rendered="#{beanA.Prompt == true and beanB.currentBase != null}"
具体的な問題とは無関係、ブール値とブール値の比較は、式がブール値の結果をすでに期待している場合にはほとんど意味がありません。私は== true
を取り除きます:
rendered="#{beanA.Prompt and beanB.currentBase != null}"
BalusCの答えに加えて、次のJava RegExpを使用して&&
をand
に置き換えます。
Search: (#\{[^\}]*)(&&)([^\}]*\})
Replace: $1and$3
EL表現で2つ以上のリテラルを使用している場合に、この正規表現の置換を複数回実行して、すべての出現箇所を見つけました。 EL式の構文が異なる場合、先頭の#を$に置き換えることに注意してください。