Thymeleafのユーティリティオブジェクトとは?初心者にもわかる活用ガイド
こんにちは。ゆうせいです。
今回は、Javaのテンプレートエンジン「Thymeleaf(タイムリーフ)」でよく使われるユーティリティオブジェクトについて解説します。
「ユーティリティオブジェクトって何?」「どんなことができるの?」と疑問に思っていませんか?
この記事では、Thymeleaf初心者でも理解できるよう、丁寧にユーティリティオブジェクトの種類や使い方を解説していきます!
ユーティリティオブジェクトとは?
ざっくり言うと「便利関数の詰め合わせ」
ユーティリティオブジェクトとは、Thymeleafテンプレート内でよく使う処理を簡単に書けるようにするオブジェクトです。
たとえば、日付のフォーマット、文字列操作、コレクション(リストやマップ)の操作、条件分岐など、テンプレートで頻繁に登場する操作をJavaコードを書かずに扱えます。
よく使うユーティリティオブジェクト一覧
Thymeleafには、以下のようなユーティリティオブジェクトが最初から用意されています。
オブジェクト名 | 内容(ざっくり) | 主な用途の例 |
---|---|---|
${#strings} | 文字列操作 | 長さ取得、切り取り、空チェック |
${#dates} | 日付操作 | 日付のフォーマットや加算 |
${#calendars} | カレンダー操作 | 曜日や月の情報取得 |
${#numbers} | 数値フォーマット | 桁区切りや通貨フォーマット |
${#bools} | 真偽値処理 | true/falseのチェック |
${#lists} | リスト処理 | 空チェック、追加、ソートなど |
${#maps} | Mapの操作 | キーや値の取得 |
${#arrays} | 配列操作 | 長さや要素の取得 |
${#objects} | nullチェック等 | 型判定、null安全 |
${#messages} | メッセージ取得 | i18n(国際化)対応文字列取得 |
${#uris} | URI操作 | URLエンコードなど |
${#ids} | ID生成 | ランダムIDの生成 |
ユーティリティオブジェクトの使い方
文字列操作(${#strings}
)
<p th:text="${#strings.toUpperCase('hello')}"></p>
これは、「hello」を大文字に変換して表示します。
よく使う関数
関数名 | 説明 |
---|---|
isEmpty(str) | 空かどうか判定 |
toUpperCase(str) | 大文字変換 |
toLowerCase(str) | 小文字変換 |
substring(str, start, end) | 部分文字列 |
日付操作(${#dates}
)
<span th:text="${#dates.format(today, 'yyyy/MM/dd')}"></span>
JavaのDateやLocalDateを「2025/06/16」のようなフォーマットで出力します。
リスト操作(${#lists}
)
<ul>
<li th:each="item : ${#lists.sort(items)}" th:text="${item}"></li>
</ul>
リスト items
をソートして表示しています。
数式の例もチェック!
ユーティリティオブジェクトの中では、数値操作もよく登場します。
${#numbers.formatDecimal(...)}
<span th:text="${#numbers.formatDecimal(12345.6789, 1, 2)}"></span>
この例では、「12,345.68」のような形に数値をフォーマットします。
数式で見るとこうです:
- 数値フォーマット:
formatDecimal(数値, 最小小数点以下桁数, 最大小数点以下桁数)
formatDecimal(12345.6789, 1, 2)
→ 「12,345.68」
メリットとデメリットを整理しよう
メリット
- Javaコードを書かなくても複雑な処理ができる
- 可読性が上がり、テンプレートが整理される
- 開発効率が向上する
デメリット
- 多用しすぎるとテンプレートが複雑になる
- Javaのロジックとテンプレートの責任が曖昧になりやすい
- 他のテンプレートエンジンと比較して学習コストが少し高い
まとめと今後の学習の指針
Thymeleafのユーティリティオブジェクトを使えば、テンプレート開発がグッと楽になります。
「こういうことできるかな?」と思ったときには、まずユーティリティオブジェクトの中にそれをやる関数がないか探してみるのがオススメです。
今後は以下の学習に進んでみましょう!
- 公式ドキュメントで関数を確認する
th:if
やth:each
と組み合わせて使ってみる- カスタムユーティリティオブジェクトの作り方を学ぶ
Thymeleafは、書けば書くほど使いやすさが実感できるテンプレートエンジンです。ぜひたくさん触って慣れていきましょう!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール
