我正在尝试在JSF中使用EL表达式中的条件表达式,但它无法正常工作。
<h:outputText value="#{(sel.description !=null) && (sel.description !='') ? sel.description : 'Empty description'} - "/>
但是它不起作用,编译器会报错:
错误跟踪[行:118] 实体名称必须紧随实体引用中的“&”之后。
你有任何建议吗? 谢谢!
我正在尝试在JSF中使用EL表达式中的条件表达式,但它无法正常工作。
<h:outputText value="#{(sel.description !=null) && (sel.description !='') ? sel.description : 'Empty description'} - "/>
但是它不起作用,编译器会报错:
错误跟踪[行:118] 实体名称必须紧随实体引用中的“&”之后。
你有任何建议吗? 谢谢!
您似乎正在使用Facelets(这是完全可以的)。但是,它是一种基于XML的视图技术。在Facelets中编写的所有内容都必须是语法上有效的XML。在XML中,&
是一个特殊字符,表示entity的开始,例如&
,<
,>
, 
等。
如果您想在XML中将&
表示为原样,则必须将其替换为&
。
<h:outputText value="#{(sel.description !=null) && (sel.description !='') ? sel.description : 'Empty description'} - "/>
然而,这并不是很易读的,您最好使用替代的EL运算符and
(有关所有可用EL运算符的概述,请参见operators in EL):
<h:outputText value="#{(sel.description !=null) and (sel.description !='') ? sel.description : 'Empty description'} - "/>
empty
关键字可以用于测试null和空值。在您的特定情况下,可以使用以下方式:<h:outputText value="#{not empty sel.description ? sel.description : 'Empty description'} - "/>
或者
<h:outputText value="#{!empty sel.description ? sel.description : 'Empty description'} - "/>
<h:outputText value="#{empty sel.description ? 'Empty description' : sel.description} - "/>
请使用and
代替&&
。您只是有一个XML语法错误。