Updated:

1. 개요

Thymeleaf 연산은 HTML 엔티티를 사용하는 부분 외에는 자바와 비슷하다. 이번에는 Thymeleaf에서 연산하는 방법에 대해 알아보도록 하자.

2. 개발 환경

  • Java 11

  • Spring Boot 2.7.5

3. 연산

3-1. 비교연산

  • > : gt
  • < : lt
  • >= : ge
  • <= : le
  • ! : not
  • == : eq
  • != : neq, ne

3-2. 조건식

자바의 삼항연자와 동일하다.

ex) (10 % 2 == 0) ? '짝수' : '홀수'

3-3. Elvis 연산자

Elvis 연산자는 조건식을 편리하게 사용하기 위한 연산자이다. 값이 없으면 해당 값을 출력하고, 없으면 뒤에 입력한 값을 출력한다.

ex) ${data}?: '데이터가 없습니다.'

3-4. No-Operation

Elvis 연산자에 ‘_‘을 넣으면, 데이터가 없는 경우 타임리프가 실행되지 않는 것처럼 동작한다.

ex) ${nullData}?: _

3-5. 예제 코드

[BasicController.java]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Controller
@RequestMapping("/basic")
public class BasicController {

    @GetMapping("/literal")
    public String literal(Model model) {
        model.addAttribute("data", "Spring!");
        return "basic/literal";
    }

    @GetMapping("/operation")
    public String operation(Model model) {
        model.addAttribute("nullData", null);
        model.addAttribute("data", "Spring!");
        return "basic/operation";
    }
}

[operation.html]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body> <ul>
  <li>산술 연산 <ul>
    <li>10 + 2 = <span th:text="10 + 2"></span></li>
    <li>10 % 2 == 0 = <span th:text="10 % 2 == 0"></span></li>
  </ul>
  </li> <li>비교 연산
  <ul>
    <li>1 > 10 = <span th:text="1 &gt; 10"></span></li>
    <li>1 gt 10 = <span th:text="1 gt 10"></span></li>
    <li>1 >= 10 = <span th:text="1 >= 10"></span></li>
    <li>1 ge 10 = <span th:text="1 ge 10"></span></li>
    <li>1 == 10 = <span th:text="1 == 10"></span></li>
    <li>1 != 10 = <span th:text="1 != 10"></span></li>
  </ul>
</li> <li>조건식
  <ul>
    <li>(10 % 2 == 0)? '짝수':'홀수' = <span th:text="(10 % 2 == 0)?'짝수':'홀수'"></span></li> </ul>
</li> <li>Elvis 연산자
  <ul>
    <li>${data}?: '데이터가 없습니다.' = <span th:text="${data}?: '데이터가 없습니다.'"></span></li>
    <li>${nullData}?: '데이터가 없습니다.' = <span th:text="${nullData}?:'데이터가 없습니다.'"></span></li> </ul>
</li>
  <li>No-Operation
    <ul>
      <li>${data}?: _ = <span th:text="${data}?: _">데이터가 없습니다.</span></li>
      <li>${nullData}?: _ = <span th:text="${nullData}?: _">데이터가 없습니다.</span></li>
    </ul> </li>
</ul>
</body>
</html>

3-6. 실행 결과

Updated:

Leave a comment