I can not find syntax for building simple for-each-loop in Thymeleaf template.
I\'m not satisfied with just th:each=\"\" attribute, because it copi
The th:block solution is definitely the best one, but alternatively you can also try using th:remove="tag" in order to remove the containing 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>
The benefit of this approach is that you can also pass a Thymeleaf expression to th:remove in order to only remove the tag conditionally, e.g. if you want only some users to be included in a <tbody>, besides having other interesting uses.
Here is the documentation for th:remove.
Use th:block as stated in the Thymeleaf guide
th:block is a mere attribute container that allows template developers to specify whichever attributes they want. Thymeleaf will execute these attributes and then simply make the block disappear without a trace.
So it could be useful, for example, when creating iterated tables that require more than one <tr> for each element:
<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>