🔸 <th:each "변수명 : ${컬렉션}"> -> 컬렉션에서 하나씩 값을 꺼내서 변수에 담는 작업을 반복.
🔸 반복문을 사용할 때는 List, 배열, Iterable, Enumeration, Map을 구현한 객체에 사용할 수 있다.<tr> <th>username</th> <th>age</th> </tr> <tr th:each="user : ${userList}"> <td th:text="${user.username}">username</td> <td th:text="${user.age}">0</td> </tr>
🔸 두번째 파라미터를 설정하면 반복 상태를 확인할 수 있다.
🔸 <th:each="user, userStat : ${userList}">
🔸 두번째 파라미터를 생략해도 '[변수명] + [Stat]'로 반복 상태를 확인 할 수 있다.<tr> <th>count</th> <th>username</th> <th>age</th> <th>etc</th> </tr> <tr th:each="user, userStat : ${userList}"> <td th:text="${userStat.count}">count</td> <td th:text="${user.username}">username</td> <td th:text="${user.age}">age</td> <td> index = <span th:text="${userStat.index}"></span> // 인덱스값(0~) count = <span th:text="${userStat.count}"></span> // 1부터 시작 size = <span th:text="${userStat.size}"></span> // 전체 크기 even = <span th:text="${userStat.even}"></span> // 짝수(boolean) odd = <span th:text="${userStat.odd}"></span> // 홀수(boolean) first = <span th:text="${userStat.first}"></span> // 처음(boolean) last = <span th:text="${userStat.last}"></span> // 마지막(boolean) current = <span th:text="${userStat.current}"></span> // 현재 객체 정보 </td> </tr>
🔸 타임리프는 조건에 맞지 않으면 해당 태그를 렌더링을 하지 않는다.
<tr th:each="user : ${userList}"> <td th:text="${userStat.count}">1</td> <td th:text="${user.username}">username</td> <td> <span th:text="${user.age}">0</span> <span th:text="'성인'" th:if="${user.age gt 20}"></span> <span th:text="'성인'" th:unless="${user.age le 20}"></span> </td> </tr>
<tr th:each="user : ${userList}"> <td th:text="${userStat.count}">1</td> <td th:text="${user.username}">username</td> <td th:switch="${user.age}"> <span th:case="10">10살</span> <span th:case="20">20살</span> <span th:case="*">기타</span> // '*' : default값 </td> </tr>