我正在尝试在 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 中的一个特殊字符,表示像, , ,等实体的开始。&
<
>
 
如果您想&
用 XML 表示原样,则必须将其替换为&
.
<h:outputText value="#{(sel.description !=null) && (sel.description !='') ? sel.description : 'Empty description'} - "/>
但是,这不太易读,您宁愿为此使用替代 EL 运算符and
(另请参阅EL 中的运算符以了解 EL中所有可用运算符的概述):
<h:outputText value="#{(sel.description !=null) and (sel.description !='') ? sel.description : 'Empty description'} - "/>
总而言之,这反过来又很笨拙,因为有一个更简单的empty
关键字来测试空性和空性。在您的特定情况下,这可以用作:
<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 语法错误。