我找不到在Thymeleaf
模板中构建简单for-each-loop的语法。
我对th:each=""
属性不满意,因为它复制了它所在的标记。
我正在寻找的是:
<th:foreach th:each="...">
...block to be repeated...
</th>
<c:forEach items="..." var="...">
中<t:loop source="..." value="...">
或Tapestry
的类似内容。有什么相似的吗?
答案 0 :(得分:39)
使用Thymeleaf指南中所述的th:block
th:block
是一个纯粹的属性容器,允许模板开发人员指定他们想要的任何属性。 Thymeleaf将执行这些属性,然后简单地使块消失而无痕迹。
因此,例如,在为每个元素创建需要多个<tr>
的迭代表时,它可能很有用:
<table>
<th:block th:each="user : ${users}">
<tr>
<td th:text="${user.login}">...</td>
<td th:text="${user.name}">...</td>
</tr>
<tr>
<td colspan="2" th:text="${user.address}">...</td>
</tr>
</th:block>
</table>
答案 1 :(得分:11)
th:block
解决方案肯定是最好的解决方案,但您也可以尝试使用th:remove="tag"
删除包含的标记:
<table>
<tbody th:each="user : ${users}" th:remove="tag">
<tr>
<td th:text="${user.login}">...</td>
<td th:text="${user.name}">...</td>
</tr>
<tr>
<td colspan="2" th:text="${user.address}">...</td>
</tr>
</tbody>
</table>
此方法的好处是您还可以将Thymeleaf表达式传递给th:remove
,以便仅有条件地删除标记,例如如果你只希望某些用户被包含在<tbody>
中,除了有其他有趣的用途之外。
Here是th:remove
的文档。