null检查jsf表达式语言 [英] null check in jsf expression language

查看:123
本文介绍了null检查jsf表达式语言的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请参阅此表达式语言

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

Even如果地图为空,则 highlight_row 样式正在应用。

Even if the map is null, highlight_row style is getting applied.

所以我改为

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

即便如此, highlight_row 正在申请。

如果地图是空或空我不希望任何样式被应用。

Even then, highlight_row is getting applied.
if the map is empty OR null I dont want any style to be applied.

任何帮助?和这种行为的原因?

Any help? and reasons for this behaviour?

推荐答案

使用清空(它检查空值和空虚)和组括号中的嵌套三元表达式(EL在某些实现/版本中,即嵌套三元表达式有些问题)。因此,所以:

Use empty (it checks both nullness and emptiness) and group the nested ternary expression by parentheses (EL is in certain implementations/versions namely somewhat problematic with nested ternary expressions). Thus, so:

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

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

If still in vain (I would then check JBoss EL configs), use the "normal" EL approach:

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

更新:根据评论,地图实际上是列表(请参阅您的命名约定)。要检查 List 是否包含正常EL方式的项目,请使用 JSTL fn:contains (虽然未明确记录,但适用于 List 以及。)

Update: as per the comments, the Map turns out to actually be a List (please work on your naming conventions). To check if a List contains an item the "normal" EL way, use JSTL fn:contains (although not explicitly documented, it works for List as well).

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

这篇关于null检查jsf表达式语言的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆