Thymeleaf如果+每个订单

时间:2015-01-28 09:40:50

标签: java spring thymeleaf

我正在做以下事情:

<p th:if="${foo != null}" th:each="row : ${foo.values().iterator().next().rowKeySet()}">

foojava.util.Map的实例。

Thymeleaf throws an `TemplateProcessingException: 
Exception evaluating SpringEL expression: "foo.values().iterator().next().value.rowKeySet()"` with root cause `SpelEvaluationException: EL1011E:(pos 22): 
Method call: Attempted to call method values() on null context object`.

th:each的结果为th:if以及如何解决时,为什么Thymeleaf处理false

这是我目前的肮脏解决方法:

<p th:if="${foo != null}" th:each="row : ${foo != null ? foo.values().iterator().next().rowKeySet() : null}">

1 个答案:

答案 0 :(得分:4)

Thymeleaf在th:each之前处理th:if因为定义了属性优先级,它确定了评估标记的顺序,这解释为here

作为一项工作,您可以包装th:each表达式,例如:

<div th:if="${foo != null}">
    <p th:each="row : ${foo.values().iterator().next().rowKeySet()}">
    ...

我不知道您正在使用的上下文,但作为参考,您可以使用Thymeleaf(docs)轻松迭代地图。