[Thymeleaf] Standard Expression Syntax : 기초 구문

Jake·2022년 5월 7일
0
post-thumbnail
post-custom-banner

1. Expressions on selections : 선택자

1) $ 심볼

  • ${session.user} 기호를 통해 object로부터 값을 불러올 수 있다

2) * 심볼

  • 기본적으로는 $와 같게 동작한다
  • th:object와 함께 사용할 시, 하위 *{} 들은 다음과 같이 동작한다.
<div th:object="${session.user}">
  <p>Name: <span th:text="*{firstName}">Sebastian</span>.</p>
  <p>Surname: <span th:text="*{lastName}">Pepper</span>.</p>
  <p>Nationality: <span th:text="*{nationality}">Saturn</span>.</p>
</div>

이 html 코드는 아래와 같이 동작한다

<div>
  <p>Name: <span th:text="${session.user.firstName}">Sebastian</span>.</p>
  <p>Surname: <span th:text="${session.user.lastName}">Pepper</span>.</p>
  <p>Nationality: <span th:text="${session.user.nationality}">Saturn</span>.</p>
</div>
  • #기호를 사용하여 object를 지정하는 것도 가능하다
<div th:object="${session.user}">
  <p>Name: <span th:text="${#object.firstName}">Sebastian</span>.</p>

  • 링크는 th:href="@{}" 구문으로 사용한다
  • th:href는 url의 변수들이 모두 배치가 되면 a 태그의 href 속성에 링크를 세팅해준다
  • ,를 통해 변수를 여러 개 지정할 수 있다

예시

<a href="details.html" th:href="@{/order/details(orderId=${o.orderId},userId=${o.userId)}">view</a>

= '/order/details?orderId=3&userId=4'

기타 가능한 구문

<a th:href="@{${url}(orderId=${o.id})}">view</a>
<a th:href="@{'/details/'+${user.login}(orderId=${o.id})}">view</a>

3. Literals : 문자 다루기

1) Literal substitution

  • | 기호를 사용하면 문자열과 변수를 섞어 쓸 때 '...' + '...' 과 같은 귀찮은 짓을 하지 않아도 된다
    - [$, *, #] 세가지만 사용할 수 있다. [(, ), boolean, numeric token, conditional expression] 등은 안된다
두 구문은 동일하게 동작한다
<span th:text="|Welcome to our application, ${user.name}!|">

<span th:text="'Welcome to our application, ' + ${user.name} + '!'">

2) Comparators and Equality

  • 대소 비교는 &_lt; &_gt;를 사용해야 한다
<div th:if="${prodStat.count} &gt; 1">
<span th:text="'Execution mode is ' + ( (${execMode} == 'dev')? 'Development' : 'Production')">
  • gt, lt, ge, le, not, eq, neq, ne 등

3) Conditional expressions

  • 우리가 타 언어에서 흔히 쓰는 아래의 구문도 가능하다

    <tr th:class="${row.even}? 'even' : 'odd'">
  • ?: 를 사용하면 null일 때는 default 값을 사용하도록 할 수 있다

<p>
  Name: 
  <span th:text="*{firstName}?: (*{admin}? 'Admin' : #{default.username})">Sebastian</span>
</p>

4) Data Conversion

  • {{}}는 String으로 형변환을 해준다
  • .toString()과 같이 기능한다고 생각하면 된다
<td th:text="${{user.lastAccessDate}}">...</td>
profile
Java/Spring Back-End Developer
post-custom-banner

0개의 댓글