연산

타임리프 연산은 자바와 크게 다르지 않습니다. HTML안에서 사용하기 때문에 HTML 엔티티를 사용하는 부분만 주의하면 됩니다.

예를 들어, <, > 같은 용어들은 HTML 태그가 쓰는 용어입니다.

BasicController 추가

package hello.thymeleaf.basic;

import lombok.Data;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

@Controller
@RequestMapping("/basic")
public class BasicController {

		...

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

		...

}
<!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 > 10 = <span th:text="1 > 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>
  1. 산술연산

  2. 비교연산

    HTML 엔티티를 사용해야 하는 부분을 주의하자!

    <aside> ❗ 엔티티표현, 비교표현 모두 사용가능하지만 엔티티를 우선시 사용하라는 의미인가요?


    원칙적으로 엔티티표현을 사용하는 것이 맞습니다. 엔티티표현을 사용하지 않으면 HTML, XML에서 문제가 될 수도 있습니다.

    (문제가 되지 않도록 타임리프도 노력하지만 문제가 될 수도 있다 정도로 생각하시면 됩니다. 실제로 >를 쓰더라도 제대로 동작하긴 합니다.)

    </aside>

  3. 조건식

  4. Elvis 연산자

    <span th:text="${data}?: '데이터가 없습니다.'"></span>
    
    <span th:text="${nullData}?:'데이터가 없습니다.'">
    
  5. No-Operation

Reference