Jsf 如何使用&&;在Facelets中的EL布尔表达式中?
我在弄清楚如何在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格式的
<h:outputText id="Prompt"
value="Fobar"
rendered="#{beanA.prompt == true && beanB.currentBase !=null}" />
但我一直得到:
错误跟踪[line:69]实体名称必须紧跟在“&”后面
在实体引用中
Facelets是一种基于XML的视图技术。
&
是一个XML格式的文件,表示像&
以结尾代码>字符。你要么逃避它,这很难看:
rendered="#{beanA.prompt == true && 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实现应该真正认识到这种情况,并给出更好的诊断。这是一个简单的问题,但对于初学者来说却非常混乱。