[Thymeleaf] 연산, Elvis 연산자, No-Operation

Kade Jeon·2024년 2월 10일
0

Thymeleaf

목록 보기
9/22

산술 연산

덧셈

<span th:text="10 + 2"></span>

12

뺄셈

<span th:text="10 - 2"></span>

8

나눗셈(몫)

<span th:text="10 / 2"></span>

5

나머지

<span th:text="10 % 2"></span>

0

boolean

<span th:text="10 % 2 == 0"></span>

true

비교연산

비교연산 시에는 HTML엔티티에 주의하여 사용한다.
> : gt
< : lt
>= : ge
<= : le
! : not
== : eq
!= : neq, ne

<span th:text="1 > 100"></span>  //false
<span th:text="1 gt 100"></span> //false

<span th:text="1 >= 100"></span> //false
<span th:text="1 ge 100"></span> //false

<span th:text="1 < 100"></span>  //true
<span th:text="1 lt 100"></span> //true

<span th:text="1 <= 100"></span> //true
<span th:text="1 le 100"></span> //true
  
<span th:text="1 == 100"></span> //false
<span th:text="1 eq 100"></span> //false

<span th:text="1 != 100"></span> //true
<span th:text="1 ne 100"></span> //true

조건식

Java의 조건식과 비슷하다. ? 앞의 조건이 맞다면 첫 번째에 해당하는 짝수, 맞지 않다면 두 번째에 해당하는 홀수 가 출력된다.

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

Elvis 연산자

조건식의 편의버전으로 Model에서 넘어온 데이터가 있으면, 그대로 출력하고 없다면 뒤에 적어둔 값이 출력된다.
Model로 넘어온 데이터가 null 인 경우에도 동일하게 동작한다.

<span th:text="${data}"?: 'No data'"></span>

❓ 왜 'Elvis' 라고 하나요?
엘비스 프레슬리(Elvis Presley) 라는 미국의 전설적인 가수의 이름에서 따왔다. 이유는 ?가 그의 특유 헤어스타일과 같고 : 이 눈처럼 보인다고 해서이다. 따라서 ?: 는 엘비스 프레슬리와 같이 생겼다고 해서 Elvis 연산자라고 한다.

출처: 나무위키

No-Operation

Elvis 연산자와 유사하게 생겼는데 model로 넘어온 데이터가 없거나, null인 경우에 출력될 데이터가 _ 로 표현되어 있다.
_은 No-Operation 문자 그대로 연산하지 않음을 의미하며 즉, Thymeleaf를 실행하지 않는다는 의미이다. 따라서 Thymeleaf가 결과적으로 취소되고 span 태그 내에 있는 문자가 출력된다.

<span th:text="${data}"?:_>No data</span>

만약 Model로 data에 값이 "hello" 가 넘어왔다고 가정하면 이 부분은 타임리프에 의해 결과적으로 아래와 같이 출력된다.

<span th:text="'hello'">No data</span> -> <span>hello</span>

하지만 Model attribute에 담기지 않은 값을 호출하거나, null이 넘어오는 경우는 _(No-Operation)이 된다.
따라서 타임리프가 적용되지 않고 span 태그 내에 있던 문자가 출력된다.

<span th:text="null"?:_>No data</span> -> <span>No data</span>
profile
안녕하세요. 백엔드 개발자가 되고 싶은 Kade 입니다.

0개의 댓글