스프링/4. 스프링 MVC-2

9. 타임리프 반복문

sdafdq 2023. 8. 22. 23:00
@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