본문 바로가기

Programming/[Thymeleaf]

[Thymeleaf] 타임리프

1. Thymeleaf

- 템플릿 엔진의 일종. html 태그에 속성을 추가해 페이지에 동적으로 값을 추가하거나 처리 가능

 

1) th: 속성

- th:OOO이 붙은 부분은 서버사이드에서 렌더링 되어 기존 내용을 대체 (th:OOO이 없으면 OOO 속성이 사용됨)

웹 브라우저는 th: 속성을 인식 못함

 

2. 템플릿 엔진

- 지정된 템플릿 양식과 데이터가 합쳐져 html 문서를 출력하는 소프트 웨어

 

1) 템플릿 엔진의 종류

1. 서버 템플릿 엔진

2. 클라이언트 템플릿 엔진

 

2) 템플릿 엔진의 장점

 - 코드 리소스가 줄어듬

 - 재사용성 향상

 - 유지보수 용이

 

3) 서버 템플릿 엔진의 종류별 특징

 - JSP : 스프링 부트에서 비권장

 - Velocity : 스프링 부트에서 비권장

 - Freemarker : 템플릿 엔진으로서 기능이 너무 다양함. 숙련도가 낮은 경우 비즈니스 로직이 추가 됨

 - Thymeleaf :  스프링에서 권장. 문법이 어려움

 - Mustache : 단순하고 서버, 클라이언트 모두 사용 가능

 

3. Thymeleaf 문법

대부분의 html 속성을  th:OOO 로 변경할 수 있다.

ex) th:text="${변수명}"

 

표현 설명 예제
@{ ... } URL 링크 표현식 th:href="@{/css/bootstrap.min.css}"
th:href="@{/{itemId}/edit(itemId=${item.id})}"
| ... | 리터럴 대체 th:text="|Hi ${user.name}!|"
(= th:text="'Hi '+${user.name}+'!'"
${ ... } 변수 th:text=${user.name}
th:each 반복 출력 <tr th:each="item: ${items}">
  <td th:text="${item.price}">100</td>
</tr>
*{ ... } 선택 변수 <tr th:object="${items}">
  <td th:text="*{price}">100</td>
</tr>
#{ ... } 메시지. properties 같은 외부 자원에서 코드에 해당하는 문자열 get. th:text="#{member.register}"