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