네로개발일기

개발자 네로의 개발 일기, 자바를 좋아합니다 !

반응형

타임리프(Thymeleaf) 템플릿에서는 for문, while문 등과 유사한 반복 처리(iteration) 처리를 위해 th:each를 사용한다.

루프 처리중 상태를 추적하는 status 변수를 이용하여 index, count 등을 얻을 수 있다.

 

loop를 원칙적으로 break 하거나 다른 곳에서 사용하는 것이 불가하다는 제한사항이 있지만 Thymeleaf가 View Template Engine이기 때문에 비즈니스 로직을 view에 작성하는 것을 지양해야한다.

 

th:each

반복하는 html 엘리먼트에 th:each 속성을 사용하여 Collection을 반복하여 화면을 처리한다.

<table class="tb_col"> 
    <thead>
    <th>seq</th>
    <th>name</th>
    <th>price</th>
    <th>quantity</th>
    </thead>
    <tbody>
        <tr th:each="product : ${productList}">
            <td th:text="${product.seq}"></td>
            <td th:text="${product.name}"></td>
            <td th:text="${product.price}"></td>
            <td th:text="${product.quantity}"></td>
        </tr>
    </tbody>
</table>

 

#numbers.sequence

컬렉션 없이 단순 반복 처리를 하고 싶다면 Number(org.thymeleaf.expression.Numbers) 클래스의 utility 메서드인 #numbers.sequence을 사용하여 먼저 원하는 반복 횟수만큼의 배열을 생성하고 th:each의 컬렉션에 넣으면 된다.

<tr:block th:each="num : ${#numbers.sequence(1,5)}"> 
    <td th:text="${num}"></td> 
</tr:block>

 

반복 상태 변수 (status)

Thymeleaf에서 th:each를 사용하면 반복 상태를 추적할 수 있는 status 변수를 제공해준다. 이를 이용하여 index, count 등 값을 추출할 수 있다.

- index      현재 반복 인덱스 (0부터 시작)

- count      현재 반복 인덱스 (1부터 시작)

- size         총 요소 수

- current   현재 요소

- even        현재 반복이 짝수인지 여부 (boolean)

- add         현재 반복이 홀수인지 여부 (boolean)

- first         현재 반복이 첫번째인지 여부 (boolean)

- last          현재 반복이 마지막인지 여부 (boolean)

 

status 변수는 기본적으로 오브젝트명 + "Stat" 변수명으로 접근할 수 있으며 th:each 선언시 개발자가 직접 명명하여 사용할 수 있다. 

<div th:each="num : ${#numbers.sequence(1,3)}"> 
    <p th:text="${'index : ' + numStat.index}"></p>
    <p th:text="${'count : ' + numStat.count}"></p> 
    <p th:text="${'size : ' + numStat.size}"></p> 
    <p th:text="${'current : ' + numStat.current}"></p> 
    <p th:text="${'even : ' + numStat.even}"></p> 
    <p th:text="${'odd : ' + numStat.odd}"></p> 
    <p th:text="${'first : ' + numStat.first}"></p> 
    <p th:text="${'last : ' + numStat.last}"></p> 
</div>

 

참고

https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#using-theach

 

Tutorial: Using Thymeleaf

1 Introducing Thymeleaf 1.1 What is Thymeleaf? Thymeleaf is a Java library. It is an XML/XHTML/HTML5 template engine able to apply a set of transformations to template files in order to display data and/or text produced by your applications. It is better s

www.thymeleaf.org

 

728x90
반응형
blog image

Written by ner.o

개발자 네로의 개발 일기, 자바를 좋아합니다 !