⚙️ 개발/Spring

[Thymeleaf] 반복문 및 상태

지구용사 2024. 10. 24. 12:03

반복문을 처리하기 위해 users라는 list를 view단으로 던져줍니다.

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);
}

 

타임리프 반복을 통해 users 라는 컬렉션에서 객체 하나하나를 왼쪽 변수 user에 담아 반복실행한다.

참고로 컬렉션 객체는 list 외 Iterable, Enumeration을 구현한 모둔 객체를 다 사용할 수 있다.

<table border="1">
    <tr>
        <th>username</th>
        <th>age</th>
    </tr>
    <tr th:each="user : ${users}">
        <td th:text="${user.username}">username</td>
        <td th:text="${user.age}">0</td>
    </tr>
</table>

 

each 반복문에 두 번째 파라미터를 추가하면 반복의 상태를 확인할 수 있다.

<tr th:each="user, userStat : ${users}">
	<td th:text="${userStat.index}">username</td>
    <td th:text="${user.username}">username</td>
    <td th:text="${user.age}">0</td>
</tr>

 

index 인덱스 번호를 리턴한다. (0부터 시작)
count 갯수를 리턴한다. (1부터 시작)
size 전체 컬렉션 사이즈를 리턴한다.
even 현재 짝수 순서인지 boolean으로 리턴한다.
odd 현재 홀수 순서인지 boolean으로 리턴한다.
first 컬렉션의 첫번째 객체인지 boolean으로 리턴한다.
last 컬렉션의 마지막 객체인지 boolean으로 리턴한다.
current 컬렉션의 현재 겍체를 리턴한다. (굳이 사용X)