본문 바로가기

백앤드 개발/Java & Spring

[Spring boot] 타임리프

1) 타임리프란(Thymleaf) ?

  • 타임리프(Thymeleaf)는 서버 사이드 Java 템플릿 엔진
  • 서버 측에서 데이터를 표시하고 HTML 템플릿을 생성하는데 특화
  • 주로 스프링 프레임워크와 사용

2) 특징

  • th: xxx 가 붙은 부분은 서버 사이드에서 렌더링 되고 기존의 것을 대체하고 없으면 기존 html 속성 사용
  • 스프링의 많은 기능과 함께 사용
  • 반복, 조건, 국제화 등의 다양한 기능 지원

3) 타임리프 사용 선언

  • <html xmlns:th="http://www.thymeleaf.org">

4) th:href 속성 변경

  • HTML을 그대로 볼 때는 href 속성 사용
  • 서버 사이드와 연동 될때는 th:href 의 값이 href 로 대체되어 데이터 바인딩
  • th:href="@{/css/bootstrap.min.css}" : 타임리프는 URL 링크 사용시 @{...}  를 사용

5) th:onclick

  • location.href='/basic/items/add' 를 타임리프에선 다음과 같이 표현
  • th:onclick="|location.href='@{/basic/items/add}'|"

6) 리터럴 대체 문법

  • 리터럴 대체 문법을 통해 다음과 같이 데이터를 바인딩
  • <span th:text="|Welcome to our application, ${user.name}!|">

7) 반복 출력

<tr th:each="item : ${items}">
	<td><a href="item.html" th:href="@{/basic/items/{itemId}(itemId=${item.id})}" th:text="${item.id}">회원id</a></td>
	<td><a href="item.html" th:href="@{|/basic/items/${item.id}|}"th:text="${item.itemName}">상품명</a></td>
	<td th:text="${item.price}">10000</td>
	<td th:text="${item.quantity}">10</td>
</tr>

 

  • 반복 출력 th:each 사용
  • 컬렉션의 수 만큼 <tr>..</tr> 이 하위 태그 생성
  • 변수 표현식 ${...} 을 통해 모델 또는 타임리프 변수 값을 조회

8) URL 링크 표현식

  • http://localhost:8080/basic/items/1?query=test 다음과 같이 링크를 생성하고 싶다면 (이때 1은 itemId 값)
  • th:href="@{/basic/items/{itemId}(itemId=${item.id}, query='test')}"