foo.messageData
是一个清单。 messageData
包含name
作为字符串。
在thymeleaf html模板中,我想打印name
的第一个元素的messageData
属性的值。
像foo.messageData[0].name
:
<span th:text="foo.messageData[0].name"></span>
和
<span th:text="foo.messageData.get(0).name"></span>
不管用。
如何打印这些数据?在Thymeleaf中有没有特定的语法?
我知道这个值可以通过使用th:each
迭代打印;但我不想要这些迭代。
Thymeleaf表达式是SpEL。在您的情况下,您可以像下面一样使用它。
<span th:text="${foo.messageData[0].name}"></span>
Thymeleaf与Spring的集成使用Spring Expression Language(SpEL)。
这意味着所有${..}
表达式都将由SpEL引擎进行评估。您可以找到有关访问List元素here的所有详细信息。
因此(请注意${..}
):
<span th:text="${foo.messageData[0]}"></span>
将打印列表foo.messageData
中的第一个元素。
如果foo.messageData
包含字符串元素:
<span th:text="${foo.messageData[0].name}"></span>
什么都不打印因为String
-s没有名字属性。
如果foo.messageData
包含我上面链接的文档中的Inventor类的实例
<span th:text="${foo.messageData[0].name}"></span>
将打印发明人的名字。
通常,您通过状态变量到达第一个元素。防爆。我有一个名为“list”的列表,我希望得到“list”中的第一个元素;我正在定义一个名为'iter'的状态变量:
th:each="{li, iter: ${list}" th:if="{iter.index} == 0"
上面提供了对列表中第一个元素的访问。有关状态变量的更多信息,请咨询Thymeleaf's Getting Started doc