gpt4 book ai didi

java - jsf表达式语言中的null检查

转载 作者:IT老高 更新时间:2023-10-28 20:30:15 24 4
gpt4 key购买 nike

请看这个表达语言

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

即使 map 为空,highlight_row 样式也会被应用。

所以我改成

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

即便如此,highlight_row 也被应用了。
如果 map 是 empty OR null 我不想应用任何样式。

有什么帮助吗?以及这种行为的原因?

最佳答案

使用 empty (它同时检查空值和空值)并通过括号对嵌套的三元表达式进行分组(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')}"

关于java - jsf表达式语言中的null检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2207266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com