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

时间:2017-01-10 10:55:15

标签: html spring html-email thymeleaf

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

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:4)

Thymeleaf与Spring的集成使用Spring Expression Language(SpEL)。

这意味着SpEL引擎将评估所有${..}表达式。 您可以找到有关访问列表元素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>

将打印发明人的姓名。

答案 2 :(得分:0)

通常,您可以通过status变量到达的第一个元素。例如我有一个名为“ list”的列表,我想获得“ list”中的第一个元素;我正在定义一个状态变量“ iter”:

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

以上内容提供对列表中第一个元素的访问。有关状态变量的更多信息,请参阅Thymeleaf's Getting Started doc

相关问题