본문 바로가기

스프링

[Thymeleaf] 반복, 조건, 블럭

반복

@GetMapping("each")
public String each(Model model) {
    List<Person> test = new ArrayList<>();
    addTestData(test);
    model.addAttribute("people", test);
    return "each";

}

private void addTestData(List<Person> test) {
    Person person1 = new Person("Gil", 25, "컴공", "백앤드");
    Person person2 = new Person("SSang", 25, "컴공", "프론트앤드");
    Person person3 = new Person("GilSSang", 25, "컴공", "풀스택");
    test.add(person1);
    test.add(person2);
    test.add(person3);
}
  • Person 객체의 리스트에 3개의 Person 객체를 넣는다.
  • 이를 Model을 통해 넘겨 반복문을 테스트한다.
<table border="1">
    <tr>
        <th>이름</th>
        <th>나이</th>
        <th>학과</th>
        <th>전공</th>
        <th>속성</th>
    </tr>

    <tr th:each="person : ${people}">
        <td th:text="${person.name}">1</td>
        <td th:text="${person.age}">2</td>
        <td th:text="${person.department}">3</td>
        <td th:text="${person.major}">4</td>
        <td>
            <span th:text="${personStat.index}"/>
            <span th:text="${personStat.count}"/>
            <span th:text="${personStat.size}"/>
            <span th:text="${personStat.even}"/>
            <span th:text="${personStat.odd}"/>
            <span th:text="${personStat.first}"/>
            <span th:text="${personStat.last}"/>
            <span th:text="${personStat.current}"/>
        </td>
    </tr>
</table>
  • th:each="반복변수 : ${반복대상객체}"를 통해 반복을 진행한다.
  • person 뒤에 반복객체에 대한 상태를 나타내는 파라미터를 추가로 넣을 수 있다. (생략 시, 객체이름+Stat으로 자동 생성)
  • index, count, size, even, odd, first, last, current를 사용할 수 있다.

조건

if

<p th:text="${people[0].name}" th:if="${people[0].age==25}"></p>
<p th:text="${people[0].name}" th:if="${people[0].age!=25}"></p>
  • if문을 통해 true라면 해당 태그가 실행되고 false라면 실행이 되지 않는다.

switch

<p th:switch="${people[0].age}">
    <span th:case="25" th:text="|${people[0].name}, ${people[0].department}|"></span>
</p>
  • switch문을 통해 맞는 case에 대한 태그가 실행되도록 한다.

블록

<th:block>
    <p>test</p>
</th:block>
  • 블럭을 구성할 thymeleaf만의 태그이다.

참고문헌

https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html
https://www.inflearn.com/course/스프링-mvc-2/dashboard