Java/Thymeleaf

반복

코딩공부 2021. 12. 3. 00:41

타임리프에서 반복은 th:each 를 사용한다.

추가로 반복에서 사용할 수 있는 여러 상태 값을 지원

 

@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);
}
<!DOCTYPE html>
<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>

기본 테이블

username age
userA 10
userB 20
userC 30

 

반복 상태 유지

count username age etc
1 userA 10 index= 0
count =1
size=3
even? = false
odd? = true
first? = true
last? = false
current = 
BasicController.User(username=userA, age=10)
2 userB 20 index= 1
count =2
size=3
even? = true
odd? = false
first? = false
last? = false
current = 
BasicController.User(username=userB, age=20)
3 userC 30 index= 2
count =3
size=3
even? = true
odd? = false
first? = false
last? = true
current = 
BasicController.User(username=userC, age=30)

반복 기능

<tr th:each="user : ${users}"> 

반복시 오른쪽 컬렉션( ${users} )의 값을 하나씩 꺼내서 왼쪽 변수( user )에 담아서 태그를 반복 실행합니다.

 

th:each

List , 배열, java.util.Iterable , java.util.Enumeration 을 구현한 모든 객체를 반복에 사용할 수 있습니다.

Map 도 사용할 수 있는데 이 경우 변수에 담기는 값은 Map.Entry 입니다

 

 

반복 상태 유지

<tr th:each="user, userStat : ${users}">

반복의 두번째 파라미터를 설정해서 반복의 상태를 확인 할 수 있습니다.

두번째 파라미터는 생략 가능한데, 생략하면 지정한 변수명( user ) + Stat 가 됩니다.

여기서는 user + Stat = userStat 이므로 생략 가능합니다

<tr th:each="user" : ${users}"> 만 작성하도라도 userStat을 사용할 수 있음

 

 

반복 상태 유지 기능

index : 0부터 시작하는 값

count : 1부터 시작하는 값

size : 전체 사이즈

even , odd : 홀수, 짝수 여부( boolean )

first , last :처음, 마지막 여부( boolean )

current : 현재 객체

 

 

수강 강의

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-2/dashboard

 

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 인프런 | 강의

웹 애플리케이션 개발에 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. MVC 2편에서는 MVC 1편의 핵심 원리와 구조 위에 실무 웹 개발에 필요한 모든 활용 기술들을 학습할 수 있

www.inflearn.com

 

'Java > Thymeleaf' 카테고리의 다른 글

주석  (0) 2021.12.03
조건부 평가  (0) 2021.12.03
속성 값 설정  (0) 2021.12.03
연산  (0) 2021.12.03
리터럴  (0) 2021.12.02