Thymeleafのループ文で繰り返し処理を行うサンプルです。
確認環境 ・thymeleaf 3 |
目次
サンプル | listをループで表示する |
mapをループで表示する | |
決められた回数繰り返す(カウントするfor文) | |
決められた回数繰り返す(カウントするfor文)と増分値を指定 |
listをループで表示する
ループ文を使用する時は、th:eachを使用します。配下の処理を繰り返します。
以下は、listをセットするコードです。
package com.example.demo;
import java.util.ArrayList;
import java.util.List;
import org.springframework.ui.Model;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class MainController {
@GetMapping("/test1")
public String output1(Model model) {
List<String> list1 = new ArrayList<>();
list1.add("赤");
list1.add("黄");
list1.add("青");
model.addAttribute("list1", list1);
return "test1/index";
}
}
12~15行目は、リストを作成しています。
thymeleaf の文
リストをループで展開する箇所です。
<th:block th:each="color1 : ${list1}">
<p th:text="${color1}"></p>
</th:block>
1行目は、th:eachでループ処理を行います。
th:blockは、HTMLとして出力されません。
結果は以下のように表示されます。
mapをループで表示する
以下は、mapをセットするコードです。
package com.example.demo;
import java.util.HashMap;
import java.util.Map;
import org.springframework.ui.Model;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class MainController {
@GetMapping("/test1")
public String output1(Model model) {
Map<String,String> map1 = new HashMap<>();
map1.put("a", "赤");
map1.put("b", "黄");
map1.put("c", "青");
model.addAttribute("map1", map1);
return "test1/index";
}
}
12~15行目は、マップを作成しています。
thymeleaf の文
マップをループで展開する箇所です。
<th:block th:each="color1 : ${map1}">
<p>
<span th:text="${color1.key}"></span>
<span th:text="${color1.value}"></span>
</p>
</th:block>
1行目は、th:eachでループ処理を行います。
mapのキーはkey、mapの値はvalueを指定します。
結果は以下のように表示されます。
決められた回数繰り返す(カウントするfor文)
th:each="変数 : ${#numbers.sequence(開始値,終了値)}" |
<th:block th:each="i : ${#numbers.sequence(0,3)}">
<p th:text="${i}"></p><!-- 0 1 2 3が出力される -->
</th:block>
0から3までの処理を繰り返します。
変数のiはカウンター変数またはループ変数と呼ばれます。
決められた回数繰り返す(カウントするfor文)と増分値を指定
th:each="変数 : ${#numbers.sequence(開始値,終了値,増分)}" |
<th:block th:each="i : ${#numbers.sequence(1,10,2)}">
<p th:text="${i}"></p><!-- 1 3 5 7 9が出力される -->
</th:block>
<th:block th:each="i : ${#numbers.sequence(10,1,-2)}">
<p th:text="${i}"></p><!-- 10 8 6 4 2が出力される -->
</th:block>
1行目は、3つめの引数が2です。ループする変数の値が2つ増加します。
4行目は、3つめの引数が-2です。ループする変数の値が2つ減少します。
関連の記事