스프링/4. 스프링 MVC-2

7. 타임리프 연산

sdafdq 2023. 8. 22. 20:03
@GetMapping("/operation")
public String operation(Model model){
    model.addAttribute("nullData", null);
    model.addAttribute("data", "Spring!");
    return "basic/operation";
}

nullData에는 null을 담고, data에는 "Spring!"을 담았다.

 

<!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>

연산은 그냥 저번에 리터럴 배우면서 문자 얘기 했던 것 처럼 숫자같은 것도 인식이 되므로 연산 그냥 쓰면 됨. 산술연산.

 

==, !, !=, >=, <= 같은 건 그냥 사용해도 괜찮지만,

> 같은 건 &gt;나 짧게 gt 이렇게 해서 써야 한다. html 문서 내에 쓰는거라 아무리 타임리프 꺼고 그걸 자바가 실행해주는 거라도 영향이 있을 수 있는 듯.

 

<span th:text="(10 % 2 == 0)?'짝수':'홀수'"></span>

삼항연산자 가능.

맞는 거 쓰는 거임.

 

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

저거는 삼항연산자와 비슷해 보이는데, 데이터가 있으면 저 데이터를 찍는거고, 없으면 오른쪽에 한 걸 찍는거임.

굳이 따지자면 이항연산자네.

${key}?:'key에값이null등없으면이거'

 

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

 

이렇게 그냥 _ 쓰는건 no-operation 이라고 해서 데이터가 null일 경우 그냥 그 부분 html만 읽는다.

<span th:text="${nulldata}?: _">데이터가 없습니다.</span>여기서 데이터 없을 경우

<span>데이터가 없습니다.</span> 이렇게. 타임리프가 없었던 것 처럼

 

 

 

 

  • 산술 연산
    • 10 + 2 = 12
    • 10 % 2 == 0 = true
  • 비교 연산
    • 1 > 10 = false
    • 1 gt 10 = false
    • 1 >= 10 = false
    • 1 ge 10 = false
    • 1 == 10 = false
    • 1 != 10 = true
  • 조건식
    • (10 % 2 == 0)? '짝수':'홀수' = 짝수
  • Elvis 연산자
    • ${data}?: '데이터가 없습니다.' = Spring!
    • ${nullData}?: '데이터가 없습니다.' = 데이터가 없습니다.
  • No-Operation
    • ${data}?: _ = Spring!
    • ${nullData}?: _ = 데이터가 없습니다.

위처럼 연산이 된다. 걍 자바처럼 쓰면 된다.

'스프링 > 4. 스프링 MVC-2' 카테고리의 다른 글

9. 타임리프 반복문  (0) 2023.08.22
8. 타임리프 속성  (0) 2023.08.22
6. thymeleaf 리터럴  (0) 2023.08.22
5. thymeleaf url  (0) 2023.08.21
4. 유틸 객체, 시간표현  (0) 2023.08.21