Thymeleaf は、Web および非 Web 環境で使用できる Java XML / XHTML / HTML5 テンプレートエンジンです。MVC ベースの Web アプリケーションのビュー層で XHTML / HTML5 を提供するのに適していますが、オフライン環境でも任意の XML ファイルを処理できます。完全な Spring Framework 統合を提供します。
開発環境#
依存関係の追加#
主に spring-boot-starter-thymeleaf 依存関係を追加します:
spring-boot-starter-thymeleaf:Thymeleaf テンプレートエンジンの自動構成
Thymeleaf の設定#
application.yml
org.thymeleaf.templatemode.TemplateMode から、Thymeleaf は 3.0.0 バージョンから HTML を HTML5、LEGACYHTML5、XHTML、VALIDXHTML の代わりに使用していることがわかります。もし 3.0.0 より前のバージョンを使用していて、非厳密な HTML を使用したい場合は、以下の設定を行う必要があります:
pom.xmlにnekohtml依存関係を追加application.ymlにspring.thymeleaf.mode=LEGACYHTML5を設定
詳細なプロパティ設定については、「Appendix A. Common application properties」の # THYMELEAF (ThymeleafAutoConfiguration) モジュールのプロパティ紹介を参照してください。(TIPS:CTRL + F で迅速に位置を特定)
テスト Controller の作成#
message プロパティに値を設定し、リダイレクトする Controller を作成します。コードは以下の通りです:
IndexController.java
テスト HTML ページの作成#
templates ディレクトリに index.html ファイルを作成し、html タグ内で Thymeleaf 名前空間 xmlns:th="http://www.thymeleaf.org" を宣言します。コードは以下の通りです:
index.html
ここでの重要なコードは:
xmlns="http://www.thymeleaf.org"
主に IDE が Thymeleaf 名前空間を認識できるようにするためのもので、タグ内に th: を入力すると、IDE が対応する構文を提示し、開発が容易になります!このコードを追加しなくても Thymeleaf テンプレートエンジンのレンダリングやページの正常表示には影響しません。
テストアクセス#
起動に成功したら、http://127.0.0.1:8080 にアクセスすると、効果が確認できます:
アクセス結果:Hello Thymeleaf!
Thymeleaf の一般的な構文#
- JAVA ソースコードパス:TagsController.java
- HTML ソースコードパス:
templatesディレクトリ
変数値の取得#
変数値の取得には $ 記号を使用します。JavaBean の場合は 変数名.属性名 方式で取得します。この点は EL 表現と同様です。
また、$ 表現は th タグ内にのみ記述でき、それ以外では機能しません。上記の例は th:text タグの値で <p>...</p> タグ内の値を置き換えています。p 内の元の値はフロントエンド開発時の表示用です。このようにして、フロントエンドとバックエンドの分離がうまく実現されています。
コンテンツ情報の出力:th:text と th:utext#
th:text:プレーンテキストとして出力th:utext:HTML タグとして出力し、ブラウザが正常にレンダリングします
HTML コード:
JAVA コード:
URL の参照#
URL の処理は @{…} 構文を使用して行います:
HTML コード:
JAVA コード:
類似のタグには:th:href と th:src があります。
文字列の置換#
多くの場合、大きなテキストの中の特定の部分だけを置き換えたいことがあります。文字列の結合操作を通じて実現できます:
別のより簡潔な方法を使用できます:
文字の置換は他の表現と組み合わせて使用することもできます:
もちろん、この形式には制限があり、|…| 内には変数表現 ${…} のみを含めることができ、他の定数や条件表現などは含めることができません。
HTML コード:
JAVA コード:
演算子#
式内で各種算術演算子を使用できます。例えば +, -, *, /, %:
論理演算子 >, <, <=, >=, ==, != も使用できます。唯一注意が必要なのは、<, > を使用する際には HTML エスケープ文字を使用することです:
HTML コード:
JAVA コード:
条件判断#
th:if, th:unless#
th:if と th:unless 属性を使用して条件判断を行います。以下の例では、タグは th:if の条件が成立した場合のみ表示されます:
th:unless は th:if の正反対で、式の条件が成立しない場合にのみその内容が表示されます。
th:switch, th:case#
複数の選択 Switch 構造をサポートしています:
デフォルト属性 default は * で表すことができます:
メッセージ式:
#{...}は、テキストの外部化、国際化または i18n とも呼ばれます。
HTML コード:
JAVA コード:
ループ#
リストデータのレンダリングは非常に一般的なシナリオです。例えば、n 件のレコードをテーブルにレンダリングする必要がある場合、そのデータ集合は反復可能でなければなりません。th:each タグを使用します:
HTML コード:
見ての通り、ループレンダリングされる要素(ここでは)に th:each タグを追加する必要があります。th:each="prod : ${prods}" は、集合変数 prods を反復処理し、ループ変数は prod で、ループ体内で式を通じてアクセスできます。
JAVA コード:
詳細なタグの使用法については、「Thymeleaf の一般的な構文」、「Thymeleaf 参考手引き」を参照して、さらに多くのテクニックを解放してください 😜