use*_*620 11 jsf el ternary-operator logical-operators
我正在尝试在jsf中使用的el表达式中使用条件表达式,但它不起作用.
<h:outputText value="#{(sel.description !=null) && (sel.description !='') ? sel.description : 'Empty description'} - "/>
Run Code Online (Sandbox Code Playgroud)
但它不起作用,编译器说:
跟踪错误[line:118]实体名称必须紧跟实体引用中的"&".
你有什么建议吗?谢谢!
Bal*_*usC 28
你好像在使用Facelets(这很好).然而,它是一种基于XML的视图技术.您在Facelets中编写的所有内容都必须是语法上有效的XML.该&是XML特殊字符表示的开始实体一样&,<,>, ,等.
如果您想&在XML中表示原样,那么您必须将其替换为&.
<h:outputText value="#{(sel.description !=null) && (sel.description !='') ? sel.description : 'Empty description'} - "/>
Run Code Online (Sandbox Code Playgroud)
但是,这不是很可读,你宁愿使用备用EL运算符and(参见EL中的运算符,了解EL中所有可用运算符的概述):
<h:outputText value="#{(sel.description !=null) and (sel.description !='') ? sel.description : 'Empty description'} - "/>
Run Code Online (Sandbox Code Playgroud)
总而言之,这又是非常笨拙的,因为有一个更简单的empty关键字,用于测试无效和空虚.在您的特定情况下,这可以用作:
<h:outputText value="#{not empty sel.description ? sel.description : 'Empty description'} - "/>
Run Code Online (Sandbox Code Playgroud)
要么
<h:outputText value="#{!empty sel.description ? sel.description : 'Empty description'} - "/>
Run Code Online (Sandbox Code Playgroud)
要么
<h:outputText value="#{empty sel.description ? 'Empty description' sel.description} - "/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12546 次 |
| 最近记录: |