본문 바로가기
Thymeleaf

[Thymeleaf] 반복 (th:each)

by 걸어가는 신사 2022. 1. 25.
타임리프에서 반복은 th:each를 사용한다.
//Controller
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);

 

1. 반복 기능

<tr th:each="user : ${users}">
  <td th:text="${user.username}">username</td>
  <td th:text="${user.age}">0</td>
</tr>
  • 반복 시 오른쪽 컬렉션 ${users}의 값을 하나씩 꺼내서 왼쪽 변수(user)에 담아서 태그를 반복 실행한다.
  • th:each는 배열, java.util.Iterable, java.util.Enumeration을 구현한 모든 객체를 반복에 사용할 수 있다.
  • Map에서도 사용할 수 있는데 이 경우 변수에 담기는 값은 Map.Entry이다.

 

2. 반복 상태 

  • 반복의 두번째 파라미터를 설정해서 반복의 상태를 확인 할 수 있다.
    • 파라미터의 이름은 바뀌어도 된다.
<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>
    <span th:text="${userStat.index}"></span>
    <span th:text="${userStat.count}"></span>
    <span th:text="${userStat.size}"></span>
    <span th:text="${userStat.even}"></span>
    <span th:text="${userStat.odd}"></span>
    <span th:text="${userStat.first}"></span>
    <span th:text="${userStat.last}"></span>
    <span th:text="${userStat.current}"></span>
  </td>
</tr>

(1) 두번째 파라미터는 생략 가능

  • 생략하면 자동으로 지정한 변수명 + Stat이 된다.
    • userStat 생략 가능, 자동으로 userStat

(2) 반복 상태 변수

  • index : 0부터 시작하는 값
  • count : 1부터 시작하는 값
  • size : 전체 사이즈
  • even, odd :  홀수 짝수 여부 (boolean)
  • first, last : 첫 번째, 마지막 객체 여부 (boolean)
  • current : 현재 객체
반응형

'Thymeleaf' 카테고리의 다른 글

[Thymeleaf] 주석, 블록 (th:block)  (0) 2022.01.25
[Thymeleaf] 조건 (if, unless, switch)  (0) 2022.01.25
[Thymeleaf] 속성값 설정  (0) 2022.01.25
[Thymeleaf] URL 링크  (0) 2022.01.25
[Thymeleaf] 객체  (0) 2022.01.25

댓글