Thymeleaf

Thymeleaf(타임리프)는 웹(서블릿 기반) 및 비웹 환경 모두에서 작동할 수 있는 자바 XML/XHTML/HTML5 템플릿 엔진이다. MVC 기반 웹 애플리케이션의 뷰 레이어에서 XHTML/HTML5를 서비스하는 데 더 적합하지만, 오프라인 환경에서도 모든 XML 파일을 처리할 수 있다. 스프링 프레임워크와 완전한 통합을 제공한다.

웹 애플리케이션에서 Thymeleaf는 JavaServer Pages(JSP)를 완전히 대체하는 것을 목표로 하며, 브라우저에서 직접 열어도 웹 페이지로 올바르게 표시되는 템플릿 파일인 내추럴 템플릿(Natural Templates) 개념을 구현한다.

Thymeleaf는 오픈 소스 소프트웨어이며, 아파치 라이선스 2.0에 따라 라이선스가 부여된다.

 특징 
프로젝트 웹사이트의 설명은 다음과 같다: Thymeleaf Features
 XML, XHTML 및 HTML5를 위한 자바 템플릿 엔진.
 웹 및 비웹(오프라인) 환경 모두에서 작동한다. 서블릿 API에 대한 강한 의존성이 없다.
 방언(dialects)이라고 불리는 모듈화된 기능 세트를 기반으로 한다.
 방언 기능(예: 평가, 반복 등)은 템플릿의 태그 및 속성에 연결되어 적용된다.
 두 가지 방언이 기본적으로 제공된다: Standard 및 SpringStandard (스프링 MVC 앱용, Standard와 동일한 구문).
 개발자는 사용자 정의 방언을 확장하고 생성할 수 있다.
 여러 템플릿 모드:
 XML: DTD 검증 여부 선택 가능.
 XHTML 1.0 및 1.1: 표준 DTD 검증 여부 선택 가능.
 HTML5: XML 형식 코드와 레거시 기반 HTML5 모두 지원. 레거시 비XML 코드는 자동으로 정리되어 XML 형식으로 변환된다.
 완전한(그리고 확장 가능한) 국제화 지원.
 입출력을 최소화하여 성능을 높인 구성 가능한 파싱된 템플릿 캐시.
 템플릿과 결과 코드 모두의 (선택적) 검증을 위한 자동 DOCTYPE 변환(템플릿 DTD에서 결과 DTD로).
 매우 뛰어난 확장성: 필요한 경우 템플릿 엔진 프레임워크로 사용할 수 있다.
 여러 예제 애플리케이션을 포함한 완전한 문서 제공.

 Thymeleaf 예제 
다음 예제는 allProducts라는 List<Product> 변수의 각 항목에 대한 행을 가진 HTML5 테이블을 생성한다.

<table>
  <thead>
    <tr>
      <th th:text="#{msgs.headers.name}">Name</th>
      <th th:text="#{msgs.headers.price}">Price</th>
    </tr>
  </thead>
  <tbody>
    <tr th:each="prod : ${allProducts}">
      <td th:text="${prod.name}">Oranges</td>
      <td th:text="${#numbers.formatDecimal(prod.price,1,2)}">0.99</td>
    </tr>
  </tbody>
</table>

이 코드 조각에는 다음이 포함되어 있다:
 국제화 표현식:  #{ ... } 
 변수/모델 속성 평가 표현식:  ${ ... } 
 유틸리티 함수:  #numbers.formatDecimal( ... ) 

또한, 이 (X)HTML 코드 조각은 전혀 처리되지 않은 상태에서도 프로토타입으로서 브라우저에 완벽하게 표시될 수 있다. 이것이 바로 내추럴 템플릿이다.

 같이 보기 
 템플릿 엔진
 자바서버 페이지
 스프링 프레임워크
 프리메이커
 아파치 벨로시티
 템플릿 속성 언어(Template Attribute Language)

 각주 

 외부 링크 
 Thymeleaf

분류:자바 라이브러리
분류:자바 플랫폼, 엔터프라이즈 에디션
분류:자바로 작성된 자유 소프트웨어
분류:아파치 라이선스 소프트웨어