본문 바로가기
Framework & Library/Spring Boot

[Spring Boot] : 타임리프 반복문 사용

by 오주현 2022. 2. 7.
반응형

타임리프 - 반복


반복을 사용하기 위해 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);
}

List에 유저들을 담아두고 html로 넘겨준다.

 

<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>
</tr>

th:each 라인을 보면 ${users}의 값을 꺼내어 user 변수에 담아 태그를 반복 실행하게 된다.

list 뿐만 아니라 배열이나 Map도 사용이 가능한다. Map은 Map.Entry에 담긴다고 한다.

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

 

하지만 생략도 가능한데 변수명+Stat를 적어주면 된다. 예를 들면 첫번째 라인을 줄여줄 때

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

이렇게 줄여줄 수 있다. 하지만 강사님이 항상 말씀하시는 명시적인 코드가 좋다. 라는 것에 걸리지 않나 싶다.

반복 상태를 유지하는 기능도 있다.

 

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>

위에서부터 0부터 시작하는 값, 1부터 시작하는 값, 전체 사이즈, 홀수,짝수여부, 처음, 마지막 여부, 현재 객체 등을 나타내는데 이런 것들을 사용해서 짝수인 경우에 버튼을 추가한다던가 등 추가 설정도 할 수 있다.

 

current는 현재 객체를 말하는데 user에 이미 담겨있으니 굳이 사용을 안 해도 된다.


스프링 MVC 2편 - 백엔드 웹 개발 활용 기술을 참고하여 공부하였습니다.

반응형

댓글