Jsf 如何使用&&;在Facelets中的EL布尔表达式中?

Jsf 如何使用&&;在Facelets中的EL布尔表达式中?,jsf,facelets,el,Jsf,Facelets,El,我在弄清楚如何在Facelets中使用EL表达式时遇到了一些困难。 所以基本上我有: <h:outputText id="Prompt" value="Fobar" rendered="#{beanA.prompt == true && beanB.currentBase !=null}" /> 但我一直得到: 错误跟踪[line:69]实体名称必须紧跟在“&”后面 在实体引用中 Facelets是一种基于XML的视图技术。&是一个XML格式的

我在弄清楚如何在Facelets中使用EL表达式时遇到了一些困难。 所以基本上我有:

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

但我一直得到:

错误跟踪[line:69]实体名称必须紧跟在“&”后面 在实体引用中


Facelets是一种基于XML的视图技术。
&
是一个XML格式的文件,表示像
&
结尾字符。你要么逃避它,这很难看:

rendered="#{beanA.prompt == true &amp;&amp; beanB.currentBase != null}"
或者改为使用
关键字,这是可读性和可维护性方面的首选:

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

与具体问题无关,当表达式已经期望布尔结果时,将布尔值与布尔值进行比较毫无意义。我要摆脱
==true

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

除了BalusC的答案之外,使用以下Java RegExp将
&&
替换为

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

您已经多次运行此正则表达式替换,以便在EL表达式中使用>2个文本时查找所有发生的情况。如果EL表达式语法不同,请注意将前导的#替换为$。

JSF实现应该真正认识到这种情况,并给出更好的诊断。这是一个简单的问题,但对于初学者来说却非常混乱。