Thymeleaf ループ文 繰り返し処理を行う

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つ減少します。

関連の記事

Thymeleaf if文 条件分岐を行うサンプル

△上に戻る