[개발] - Spring/Thymeleaf

Thymeleaf (9) 반복

완벽한 장면 2023. 11. 15. 16:24

반복

- 타임리프에서 반복은 th:each 를 사용한다. 추가로 반복에서 사용할 수 있는 여러 상태 값을 지원한다.

 

BasicController 추가

@GetMapping("/each")
public String each(Model model) {
    addUsers(model);
    return "basic/each";
}
private void addUsers(Model model) {
    List<User> list = new ArrayList<>();
    list.add(new User("userA", 10));
    list.add(new User("userB", 20));
    list.add(new User("userC", 30));
    model.addAttribute("users", list);
}

 

/resources/templates/basic/each.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>기본 테이블</h1>
<!-- 기본 테이블 생성 -->
<table border="1">
    <tr>
        <th>username</th>
        <th>age</th>
    </tr>
    <!-- Thymeleaf의 th:each를 사용하여 사용자 목록(users)을 반복하며 각 사용자 정보 표시 -->
    <tr th:each="user : ${users}">
        <td th:text="${user.username}">username</td>
        <td th:text="${user.age}">0</td>
    </tr>
</table>

<h1>반복 상태 유지</h1>

<!-- 반복 상태 유지하는 테이블 생성 -->
<table border="1">
    <tr>
        <th>count</th>
        <th>username</th>
        <th>age</th>
        <th>etc</th>
    </tr>
    <!-- Thymeleaf의 th:each를 사용하여 사용자 목록(users)을 반복하며 각 사용자 정보 표시 -->
    <!-- 사용자 목록(users)을 반복하면서 반복 상태(userStat)도 함께 사용 -->
    <tr th:each="user, userStat : ${users}">
        <!-- 현재 사용자 정보 출력 -->
        <td th:text="${userStat.count}">username</td>
        <td th:text="${user.username}">username</td>
        <td th:text="${user.age}">0</td>
        <td>
            <!-- 사용자 목록(users)을 반복하면서 생성되는 반복 상태(userStat) 정보 출력 -->
            index = <span th:text="${userStat.index}"></span>
            count = <span th:text="${userStat.count}"></span>
            size = <span th:text="${userStat.size}"></span>
            even? = <span th:text="${userStat.even}"></span>
            odd? = <span th:text="${userStat.odd}"></span>
            first? = <span th:text="${userStat.first}"></span>
            last? = <span th:text="${userStat.last}"></span>
            current = <span th:text="${userStat.current}"></span>
        </td>
    </tr>
</table>

</body>
</html>

 

부연설명

- 표를 생성하고 반복적으로 사용자 데이터를 표시하는 예제


1. 기본 테이블

  • <table> 요소를 사용하여 테이블을 생성하고, <tr> 요소를 사용하여 테이블 행을 정의.
  • th:each 속성을 사용하여 ${users} 변수의 각 사용자에 대해 반복하고, 
    ${user.username} 및 ${user.age}를 사용하여 사용자 이름과 나이를 표시한다.

 

2. 반복 상태 유지

  • 두 번째 테이블은 반복 상태 정보를 함께 출력한다.
  • th:each="user, userStat : ${users}"를 사용하여 사용자 목록을 반복하면서 userStat 변수에 반복 상태 정보를 저장.
  • 반복 상태 정보는 index, count, size, even, odd, first, last, current 등 다양한 속성으로 사용자 정의할 수 있으며, 
    이 정보를 출력하여 반복 상태를 확인할 수 있다.

반복 기능

<tr th:each="user : ${users}">

 

반복 상태 유지

 

반복 상태 유지 기능

 


if, unless

 

switch

 

실행하면

 

728x90
반응형