当前位置: 首页 > 面试题库 >

jsf表达式语言中的null检查

苍意智
2023-03-14
问题内容

请查看此表达语言

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(检查空性和空性)并使用括号将嵌套的三元表达式分组(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')}"


 类似资料:
  • 了解 After Effects 中的表达式和表达式引用,如时间转换方法和矢量数学方法。 使用 After Effects 表达式元素以及标准 JavaScript 元素来编写您的表达式。您可随时使用“表达式语言”菜单将方法和属性插入到表达式中,您还可以随时使用关联器来插入属性。 如果参数描述包含等号 (=) 和一个值(例如 t=time 或 width=.2),则当您未指定其他值时,该参数将使用

  • JSP表达式语言(EL)使得访问存储在JavaBean中的数据变得非常简单。JSP EL既可以用来创建算术表达式也可以用来创建逻辑表达式。在JSP EL表达式内可以使用整型数,浮点数,字符串,常量true、false,还有null。 一个简单的语法 典型的,当您需要在JSP标签中指定一个属性值时,只需要简单地使用字符串即可: <jsp:setProperty name="box" propert

  • 本文章将介绍Thymeleaf Spring表达式语法中的概念。 Spring Expression Language(简称SpEL)是一种强大的表达式语言,支持在运行时查询和操作对象图。 语言语法类似于Unified EL,但提供了额外的功能,特别是方法调用和基本的字符串模板功能。 Spring表达式语言的创建旨在为Spring社区提供单一支持的表达式语言。 它的语言特性是由Spring项目中的

  • 主要内容:示例,SpEL对Bean定义的支持,SpEL中的运算符,SpEL中的变量Spring Expression Language(简称 SpEL)是一种功能强大的表达式语言,支持运行时查询和操作对象图 。表达式语言一般是用最简单的形式完成最主要的工作,以此减少工作量。 Java 有许多可用的表达式语言,例如 JSP EL,OGNL,MVEL 和 JBoss EL,SpEL 语法类似于 JSP EL,功能类似于 Struts2 中的 OGNL,能在运行时构建复杂表达式、存取

  • Handlebars 表达式是 Handlebars 模板的基本单位。 您可以在 {{mustache}} 中单独使用它们或将它们用作 Handlebars 助手代码, 或将其用作 Hash 参数中的值。 基本用法 Handlebars 表达式是一些以双花括号 {{}} 括起来的内容。在以下的模版中,firstname 是一个被声明为表达式的变量,且被双花 括号括起来。template <p>{{