サイムリーフの繰り返しの使い方は何ですか?
Thymeleafでの繰り返し処理は、th:each属性を使用して実現されます。その構文形式は以下の通りです。
<th:block th:each="item : ${items}">
<!-- 循环体 -->
</th:block>
th:each属性は、ループするコレクションや配列を指定するために使用され、itemは現在のイテレーション要素を指し、${items}はループするコレクションや配列の参照です。
ループ内では、Thymeleafの式言語(Expression Language)を使用してitemの属性を参照することができます。例えば、
<th:block th:each="item : ${items}">
<p th:text="${item.name}"></p>
</th:block>
上記のコードでは、繰り返し処理されるコレクションや配列の各要素には、nameという属性があります。th:text属性を使用して、各要素のname属性の値を出力します。
Thymeleafは、コレクションや配列をループするだけでなく、Mapをループすることもサポートしています。その文法は以下の通りです:
<th:block th:each="entry : ${map}">
<p th:text="${entry.key}"></p>
<p th:text="${entry.value}"></p>
</th:block>
上記のコードでは、Mapをループしてentryというキーと値を持つオブジェクトを使用し、th:text属性を使って各entryのキーと値を出力しています。
さらにThymeleafは、現在のループの状態やインデックスを取得するためのいくつかの追加のループ変数も提供しています。例えば:
- インデックス:現在のループのインデックス、0から始まります。
- count:ループの現在のカウント、1から始まる。
- サイズ:走査されるコレクションや配列の大きさ。
以下はサンプルコードです。
<th:block th:each="item, index : ${items}">
<p th:text="${index}"></p>
<p th:text="${item}"></p>
</th:block>
上記のコードでは、item変数以外にも、現在のループのインデックス値を取得するためにindex変数も使用されています。
総じて、Thymeleafはth:each属性を使用して、コレクション、配列、またはMapを反復処理し、式言語を組み合わせて要素の属性や値を参照します。