Thymeleaf

Thymeleafは、Web (サーブレットベース) と非Web環境の両方で機能するJava XML / XHTML / HTML5テンプレート エンジンである。 MVCベースの Webアプリケーションのビュー レイヤーで XHTML/HTML5 を提供するのに適しているが、オフライン環境でも任意の XML ファイルを処理できる。完全なSpring Framework統合を提供する。

Webアプリケーションでは、ThymeleafはJavaServerPages (JSP) の完全な代替を目指しており、 Natural Templatesの概念を実装している: ブラウザで直接開くことができ、Web ページとして正しく表示されるテンプレート ファイルである。

Thymeleafはオープンソース ソフトウェアであり、 Apache License 2.0の下でライセンスされている。

特徴 
プロジェクトのウェブサイトから: 

 XML、XHTML、およびHTML5用の Javaテンプレート エンジン。
 Web環境と非Web (オフライン) 環境の両方で機能する。サーブレットAPI への強い依存はない。
 ダイアレクトと呼ばれるモジュラー機能セットに基づいている。
 方言機能 (例: 評価、反復など) は、それらをテンプレートのタグや属性にリンクすることによって適用される。
 すぐに使用できる2つの方言: StandardとSpringStandard ( Spring MVCアプリの場合、Standard と同じ構文)。
 開発者は、カスタム方言を拡張および作成できる。
 いくつかのテンプレート モード:
 XML: DTDに対して検証するかどうか。
 XHTML 1.0 および 1.1 : 標準のDTDに対して検証するかどうか。
 HTML5 : XML形式のコードとレガシーベースのHTML5の両方。従来の非XMLコードは自動的にクリーンアップされ、XML形式に変換される。
 完全な (そして拡張可能な)国際化サポート。
 入力/出力を最小限に抑える、構成可能な高性能の解析済みテンプレート キャッシュ。
 テンプレートと結果コードの両方の検証 (オプション) のための、テンプレートDTDから結果 DTDへの自動DOCTYPE変換。
 非常に拡張可能: 必要に応じて、テンプレート エンジン フレームワークとして使用できる。
 いくつかのサンプル アプリケーションを含む完全なドキュメント。

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>このコードには以下が含まれる。

 国際化表現: #{ ... } rh
 変数/モデル属性の評価式: ${ . . . }
 ユーティリティ関数: #numbers.formatDecimal( . . . )

また、この (X)HTMLコードの断片は、まったく処理せずに、プロトタイプとしてブラウザで完全に表示できる: これは自然なテンプレートである。

関連項目 

 テンプレートエンジン (ウェブ)
 JavaServer Pages
 Spring Framework
 FreeMarker
 Apache Velocity
 テンプレート属性言語

脚注

外部リンク 

 Thymeleaf
 Thymeleaf とAngularの比較
テンプレートエンジン
Java enterprise platform