Je ne trouve pas de syntaxe pour la construction simple de for-each-loop dans le template Thymeleaf
. Je ne suis pas satisfait avec juste th:each=""
attribut, car il copie la balise dans laquelle il se trouve.
Ce que je recherche, c'est quelque chose comme:
<th:foreach th:each="...">
...block to be repeated...
</th>
quel est analogue de <c:forEach items="..." var="...">
ou <t:loop source="..." value="...">
dans Tapestry
. Est-ce que quelque chose de semblable pour ça?
Utilisation th:block
comme indiqué dans le guide Thymeleaf
th:block
est un simple conteneur d’attributs qui permet aux développeurs de modèles de spécifier les attributs qu’ils souhaitent. Thymeleaf exécutera ces attributs puis fera simplement disparaître le bloc sans laisser de trace.
Cela pourrait donc être utile, par exemple, lors de la création de tables itérées nécessitant plus d'un <tr>
pour chaque élément:
<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>
Le th:block
La solution _ est certainement la meilleure solution, mais vous pouvez également utiliser th:remove="tag"
afin de supprimer la balise contenant:
<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>
L'avantage de cette approche est que vous pouvez également passer une expression de Thymeleaf à th:remove
afin de ne supprimer la balise que de manière conditionnelle, par ex. si vous voulez que quelques utilisateurs seulement soient inclus dans un <tbody>
, en plus d’avoir d’autres utilisations intéressantes.
Here est la documentation de th:remove
.