タイトル: Thymeleaf
本稿はテンプレートエンジンであるThymeleafについて説明します。
子ページから項目を選択してください。
Thymeleafとは?
ThymeleafとはSpring Bootにて標準的に利用されることが多いテンプレートエンジン。JSPと異なり、Thymeleaf文を含むファイルはそのまま静的HTMLとしても開ける「ナチュラルテンプレート」が特徴で、デザイナーとの分業がしやすい設計になっています。
主な特徴
- ナチュラルテンプレート — ブラウザで直接開いても壊れない(属性として記述するため)
- Spring Boot 標準 —
spring-boot-starter-thymeleafを入れるだけで動く - HTML5 / XHTML 準拠 — 名前空間
th:接頭辞でタグ拡張 - テンプレート再利用 — フラグメント機能でヘッダー・フッターを共通化
- 条件分岐・繰り返し —
th:if,th:eachでロジック表現
本ページの子ページ
| 項目 | 内容 |
|---|---|
| 導入方法と基本動作 | Spring Bootへの組み込みと、最初のテンプレート表示 |
| メッセージ式 | #{...} での国際化メッセージ参照 |
| テンプレートフラグメント(ヘッダー等の共有化) | th:fragment / th:replace による部品化 |
基本構文の早見
| 用途 | 書き方 |
|---|---|
| 変数の埋め込み | ${user.name} |
| テキスト表示 | <span th:text="${user.name}">サンプル</span> |
| 属性指定 | <a th:href="@{/users/{id}(id=${user.id})}">...</a> |
| 条件分岐 | <p th:if="${flag}">...</p> |
| 繰り返し | <tr th:each="item : ${list}">...</tr> |
| URL生成 | @{/path/to/page} |
| メッセージ | #{label.user.name} |
| フラグメント | <div th:replace="~{header :: nav}"></div> |
シンプルな例
|
<!DOCTYPE html> |
JSP との違い
| 項目 | JSP | Thymeleaf |
|---|---|---|
| 記法 | 独自タグ・スクリプトレット | HTML属性に th: 追加 |
| 静的HTMLとして開けるか | 不可 | 可(ナチュラルテンプレート) |
| Spring Boot標準 | 古い(追加設定要) | 標準サポート |
| パフォーマンス | コンパイル後は高速 | 同等 |
注意点
- キャッシュ: 本番では
spring.thymeleaf.cache=true(既定)が高速。開発中はfalseにすると即反映 - HTML5モード:
spring.thymeleaf.mode=HTML(既定)で動く - fragment命名: 部品化時の名前衝突に注意
関連
- 親カテゴリ: テンプレートエンジン
- Spring Framework: Spring Framework
- Spring主要アノテーション: Spring Frameworkのアノテーション一覧