Thymeleaf:如果属性和属性存在,则显示文本

Jam*_*mes 23 spring spring-el thymeleaf

如果属性和属性存在,是否有一种简单的方法在百万富翁中显示属性属性的内容?如果我的html页面中存在属性"summary"的属性"error",我想展示它:

<span th:text="${error.summary}">error summary</span>
Run Code Online (Sandbox Code Playgroud)

如果没有属性"error",则会引发以下错误:

org.springframework.expression.spel.SpelEvaluationException: EL1007E:(pos 0): Field or property 'summary' cannot be found on null

目前我正在使用以下方法,这似乎太复杂了.

<span th:if="${error != null and error.summary != null}"><span th:text="${error.summary}">error summary</span></span>
Run Code Online (Sandbox Code Playgroud)

有没有更简单的方法来实现这一目标?

tdu*_*eau 51

当然!由于与th:if属性关联的处理器具有比与属性关联的处理器更高的优先级th:text,因此将首先评估它.这样你就可以写:

<span th:if="${error != null && error.summary != null}" th:text="${error.summary}">Static summary</span>
Run Code Online (Sandbox Code Playgroud)

您甚至可以使用以下方法缩短它:

<span th:text="${error?.summary}">Static summary</span>
Run Code Online (Sandbox Code Playgroud)

但我认为在这种情况下,无论摘要是否存在,都会创建span标记,这有点难看.

请参阅有关条件表达式的详细信息在这里.

  • 条件表达式的链接不起作用。 (2认同)