繁体   English   中英

null检查jsf表达式语言

[英]null check in jsf expression language

请参阅此表达语言

styleClass="#{obj.validationErrorMap eq null ? ' ' :  
     obj.validationErrorMap.contains('key')?'highlight_field':'highlight_row'}"

即使地图为null,也会应用highlight_row样式。

所以我改为

styleClass="#{empty obj.validationErrorMap ? ' ' :  
     obj.validationErrorMap.contains('key')?'highlight_field':'highlight_row'}"

即使这样, highlight_row也会得到应用。
如果地图为empty OR null我不想要应用任何样式。

有帮助吗? 和这种行为的原因?

使用empty (它检查nullness和emptiness)并用括号对嵌套的三元表达式进行分组(EL在某些实现/版本中,即嵌套三元表达式有些问题)。 因此,所以:

styleClass="#{empty obj.validationErrorMap ? ' ' :  
 (obj.validationErrorMap.contains('key') ? 'highlight_field' : 'highlight_row')}"

如果仍然徒劳(我会检查JBoss EL配置),使用“普通”EL方法:

styleClass="#{empty obj.validationErrorMap ? ' ' :  
 (obj.validationErrorMap['key'] ne null ? 'highlight_field' : 'highlight_row')}"

更新 :根据评论, Map结果实际上是一个List (请按照您的命名约定)。 要检查List包含“正常”EL方式的项目,请使用JSTL fn:contains (尽管未明确记录,但它也适用于List )。

styleClass="#{empty obj.validationErrorMap ? ' ' :  
 (fn:contains(obj.validationErrorMap, 'key') ? 'highlight_field' : 'highlight_row')}"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM