null检查jsf表达式语言 [英] null check in jsf expression language
问题描述
请参阅此表达式语言
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屋!