인프런 김영한 강사님의 스프링 mvc2편을 보고 정리한 내용입니다.
무엇을 배웠나요?
- 타임리프에서 반복은 th:each 를 사용한다. 추가로 반복에서 사용할 수 있는 여러 상태 값을 지원한다.
- <tr th:each="user : ${users}"> : 반복시 오른쪽 컬렉션 ${users}의 값을 하나씩 꺼내서 왼쪽 변수(user)에 담아서 태그를 반복 실행합니다.
- th:each 는 List 뿐만 아니라 배열, java.util.Iterable, java.util.Enumeration을 구현한 모든 객체를 반복에 사용할 수 있습니다. Map도 사용할 수 있는데 이 경우 변수에 담기는 값은 Map.Entry입니다(자바에서 반복문을 돌릴수 있는 것들은 웬만해서는 전부 가능)
- 이때 Entry는 key와 value를 같이 가지고 있는 객체
- <tr th:each="user, userStat : ${users}"> 같이 반복의 두번째 파라미터를 설정해서 반복의 상태를 확인할 수 있습니다. 두번째 파라미터는 생략가능한데 생략하면 지정한 벼눗명(user)+ Stat 가 됩니다.
- 여기서는 user + Stat = userStat 이므로 생략이 가능합니다.
- 반복상태 유지 기능
- index : 0부터 시작하는 값
- count: 1부터 시작하는 값
- size : 전체 사이즈
- even, odd : 홀수, 짝수 여부(boolean)
- first, last : 처음, 마지막 여부(boolean)
- current : 현재 객체
궁금한 점은 무엇인가요?
더 필요하다고 생각한 것이 있나요?
코드
<tr th:each="user : ${users}">
<td th:text="${user.username}">username</td>
<td th:text="${user.age}">0</td>
</tr>
<h1>반복 상태 유지</h1>
<table border="1">
<tr>
<th>count</th>
<th>username</th>
<th>age</th>
<th>etc</th>
</tr>
<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>
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>
'Spring' 카테고리의 다른 글
스프링 mvc2편 타임리프 - 기본 기능 : 주석 (0) | 2022.08.08 |
---|---|
스프링mvc2편 타임리프 - 기본기능 : 조건부 평가 (0) | 2022.08.05 |
스프링mvc2편 타임리프 - 기본기능 : 속성 값 설정 (0) | 2022.08.05 |
스프링mvc2편 타임리프 - 기본기능 : 연산 (0) | 2022.08.05 |
스프링mvc2편 타임리프 - 기본기능 : 리터럴 (0) | 2022.08.05 |