Thymeleaf

[Thymeleaf] 조건 (if, unless, switch)

걸어가는 신사 2022. 1. 25. 19:34
타임리프의 조건식
  • if, unless (if의 반대), switch

Example

/Controller
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);

1. if

th:if
<tr th:each="user, userStat : ${users}">
  <td>
    <span th:text="'미성년자'" th:if="${user.age lt 20}"></span>
    <!-- 10 < 20 = true => 미성년자 출력 -->
    <!-- 20 < 20 = false -->
    <!-- 30 < 20 = false -->
  </td>
</tr>
  • 타임리프는 해당 조건이 맞지 않으면 태그 자체를 렌더링 하지 않는다.
  • if 조건이 false 인 경우 span 태그가 사라진다.

 

2. unless (= if not)

th:unless
<tr th:each="user, userStat : ${users}">
  <td>
    <span th:text="'미성년자'" th:unless="${user.age ge 20}"></span>
    <!-- !(10 > 20) = true => 미성년자 출력 -->
    <!-- !(20 > 20) = false -->
    <!-- !(30 > 20) = false -->
  </td>
</tr>
  • 타임리프는 해당 조건이 맞지 않으면 태그 자체를 렌더링하지 않는다.
  • unless 조건이 false 인 경우 span 태그가 사라진다.

 

3. switch

th:switch
th:case
<tr th:each="user, userStat : ${users}">
  <td th:switch="${user.age}">
    <span th:case="10">10살</span> <!-- 10 == 10 = true 일때 10살 출력 -->
    <span th:case="20">20살</span> <!-- 20 == 20 = true 일때 20살 출력 -->
    <span th:case="*">기타</span> <!-- 만족하는 조건이 없을 때 기타 출력 -->
  </td>
</tr>
  • *은 만족하는 조건이 없을 때 사용하는 디폴트이다.
반응형