@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);
}
리스트에 User 넣은다음에 그걸 모델에다 넣어줌.
<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>
<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>
<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>
</body>
</html>
반복은 th:each="user : ${users}" 우리가 쓰는 foreach( 원소로쓸이름 : 집합 ) 랑 같음. 자기 태그 포함 자기와 자기 자식을 반복함.
<tr th:each="user, userStat : ${users}">
userStat, 저렇게 두번째 인자로 있는 건 어떤 저런 리스트에서의 현재 원소에 대한 속성? 상태? 그러니까 몇번째 인덱스냐 그런 거.
예를 들어
index
count
size
first
last
even
odd
index는 인덱스고 count는 자기 차례, 그러니까 인덱스 처럼 0 말고 1부터 시작한.
다 알만한 내용들임.
저렇게 내가 직접 이름을 userStat이렇게나 다르게 지어서 써도 되고,
저거 안써도 원소로쓸이름 + Stat 이렇게 해서 비명시적으로도 쓸 수 있음. 자동으로 생성됨,
'스프링 > 4. 스프링 MVC-2' 카테고리의 다른 글
11. 타임리프 주석 (0) | 2023.08.23 |
---|---|
10. 타임리프 조건문 (0) | 2023.08.22 |
8. 타임리프 속성 (0) | 2023.08.22 |
7. 타임리프 연산 (0) | 2023.08.22 |
6. thymeleaf 리터럴 (0) | 2023.08.22 |