Thymeleaf
テンプレートに単純なfor-each-loopを構築するための構文が見つかりません。 th:each=""
属性だけでは満足できません。これは、それが配置されているタグをコピーするためです。
私が探しているのは次のようなものです:
<th:foreach th:each="...">
...block to be repeated...
</th>
Tapestry
の<c:forEach items="..." var="...">
または<t:loop source="..." value="...">
の類似物。それに似たものはありますか?
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>
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>
に含めたい場合。
ここ はth:remove
のドキュメントです。