Thymeleaf:如何在没有迭代的情况下获得列表的第一个元素?

问题描述 投票:4回答:3

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迭代打印;但我不想要这些迭代。

html spring html-email thymeleaf
3个回答
5
投票

Thymeleaf表达式是SpEL。在您的情况下,您可以像下面一样使用它。

<span th:text="${foo.messageData[0].name}"></span>

4
投票

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>

将打印发明人的名字。


0
投票

通常,您通过状态变量到达第一个元素。防爆。我有一个名为“list”的列表,我希望得到“list”中的第一个元素;我正在定义一个名为'iter'的状态变量:

th:each="{li, iter: ${list}" th:if="{iter.index} == 0"

上面提供了对列表中第一个元素的访问。有关状态变量的更多信息,请咨询Thymeleaf's Getting Started doc

© www.soinside.com 2019 - 2024. All rights reserved.