본문 바로가기
JAVA/SpringBoot

타임리프의 표현식과 예제

by GangDev 2024. 3. 26.

 

타입리프에서는 다양한 표현식을 사용해서 동적인 데이터를 다루는데, 표현식을 HTML 태그의 속성에 삽입하여 서버 사이드에서 처리하게 한다.

 

변수 표현식 '${...}' >>

 

목적: 모델 속성이나 객체에 접근하기 위해 사용된다.
구문: '${변수명}' 또는 '${객체명.속성명}'
예시:

<p th:text="${user.name}">Default Name</p>

위 코드는 user 객체의 name 속성 값을 <p> 태그의 내용으로 설정한다.
만약 user.name 이 "홍길동" 이라면, 결과는 <p>홍길동</p> 이 된다.

 

선택 변수 표현식 '*{...}'

 

목적: 지역 변수에 접근하기 위해 사용된다. 주로 th:object 와 함께 사용된다.
구문: '*{변수명}' EHsms '*{객체명.속성명}'


예시:

<div th:object="${user}">
  <p th:text="*{name}">Default Name</p>
</div>

위 코드는 th:object 로 설정된 user 객체의 name 속성을 참조한다.
user.name 이 "홍길동"이라면 결과는 <p>홍길동</p> 이 된다.

 

메시지 표현식: '#{...}'

 

목적: 메시지 파일에서 메시지를 가져오는 데 사용된다. (주로 국제화 관련 다국어 지원 및 메시지 관리를 위한 목적)
구문: '#{메시지키, 인자들}'


예시:

<p th:text="#{welcome.message}">Welcome message</p>

 

위 코드는 메시지 파일에서 welcome.message 키에 해당하는 값을 찾아 <p> 태그의 내용으로 설정한다.


<p th:text="${user.age}">30</p>

 

위 코드는 user 객체의 age 속성 값을 표시한다.

<ul>
  <li th:each="item : ${items}" th:text="${item}">Item</li>
</ul>

 

위 코드는 items 리스트의 각 항목을 순회하며 <li> 태그를 생성한다.

 

조건문 >>

<div th:if="${user.isAdmin}">Admin User</div>

 

위 코드는 user.isAdmin 이 true 일 경우에만 Admin User를 표시한다.

<div th:unless="${user.isAdmin}">Not Admin</div>

 

위 코드는 user.isAdmin 이 false 일 경우에만 Not Admin을 표시한다.

<a th:href="@{/login}">Login</a>

 

위 코드는 /login 경로로의 링크를 생성한다.

<div th:switch="${user.role}">
  <p th:case="'admin'">Admin User</p>
  <p th:case="'user'">Regular User</p>
  <p th:case="*">Unknown Role</p>
</div>

 

다중 조건을 처리한다.
th:switch로 조건을 설정하고, th:case 로 각 경우를 정의한다.
위 코드에서 user.role 의 값에 따라 다른 텍스트를 표시한다.
user.role 이 admin 이면 Admin User, user 이면 Regular User 를 표시하고, 그 외의 값이면 Unknown Role 로 표시한다.

 

---

24년 1월 23일 작성된 글입니다