この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:3
ページ更新者:atom
更新日時:2026-05-17 06:28:42

タイトル: 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>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Sample</title>
</head>
<body>
    <h1 th:text="${title}">Static Title</h1>
    <ul>
        <li th:each="u : ${users}" th:text="${u.name}">Dummy</li>
    </ul>
</body>
</html>

JSP との違い

項目JSPThymeleaf
記法独自タグ・スクリプトレットHTML属性に th: 追加
静的HTMLとして開けるか不可可(ナチュラルテンプレート)
Spring Boot標準古い(追加設定要)標準サポート
パフォーマンスコンパイル後は高速同等

注意点

  • キャッシュ: 本番では spring.thymeleaf.cache=true(既定)が高速。開発中は false にすると即反映
  • HTML5モード: spring.thymeleaf.mode=HTML(既定)で動く
  • fragment命名: 部品化時の名前衝突に注意

関連