防止 spring 表达式中出现空值

Guard against null in spring expression

我在 jsp 页面中有以下内容,其中 bar 是 foo

的一个字段(可以为空)
<c:set var="fieldAccessorsSuppliedToComponent" value="foo.bar.name" />

//omissions

<spring:eval expression="${fieldAccessorsSuppliedToComponent}" var="currentField"/>

我无法控制 fieldAccessorsSuppliedToComponent 的结果,foo.bar1.bar2.bar3.address.city 是可能的,任何步骤都可能为空。我目前已经通过遍历 'fields' ->

解决了这个问题
<c:set var="fields" value="${fn:split(column, '.')}" />

并测试每个步骤是否为空。一团糟。可以用 SPeL 中内置的东西来完成吗

让它处理空值的最简单方法是什么?默默地失败而不设置 currentField 是理想的。

where bar is a field (which can be null) of foo

Null-safe Navigator 运算符来拯救:

value="foo.bar?.name"

在文档中查看更多信息:https://docs.spring.io/spring/docs/5.2.4.RELEASE/spring-framework-reference/core.html#expressions-operator-safe-navigation