ミルラク

Thymeleafでユーティリティオブジェクトを使用する

更新日: 2024-02-27

当サイトはアフィリエイト広告を利用しています。

Thymeleafを書籍で学びたい方やThymeleafと一緒にSpringも習得したい方におすすめな書籍です。
Springについての書籍ですが、Thymeleafの基本構文や他システムとの連携など30ページほど取り上げられています。
ThymeleafとSpringは親和性の高い技術なので、これを機にSpringを学んでみるのはいかがでしょうか?

実行環境

実行環境がない方は、こちらの記事を参考にしてください。

項目バージョン
OSmacOS Catalina
JDKOracle JDK@8
Thymeleaf3.1

Thymeleafでユーティリティオブジェクトを使用する

ユーティリティオブジェクトはテンプレート内で使用できるメソッドです。ここでは、比較的使用頻度が高い以下のユーティリティオブジェクトを紹介します。

  • #dates
  • #numbers
  • #strings
  • #lists

#dates

日付 java.util.Date オブジェクト用のユーティリティオブジェクトです。
現在日時の日付オブジェクトを作成したり、指定されたパターンで日付をフォーマットしたりすることができます。

${#dates.createNow()}

現在日時の日付オブジェクトを作成します。

<span th:text="${#dates.createNow()}"></span>

Sat May 16 00:00:00 JST 2020

${#dates.format(date, ‘yyyy/MM/dd HH:mm:ss’)}

指定されたパターンで日付をフォーマットします。

<span th:text="${#dates.format(#dates.createNow(), 'yyyy/MM/dd HH:mm:ss')}"></span>

2020/05/16 00:00:00

#numbers

数値オブジェクト用のユーティリティオブジェクトです。
千の位の区切り文字を設定したり、シーケンスを作成することができます。

${#numbers.formatInteger(number, 3, ‘COMMA’)}

整数の最小桁数と千の位の区切り文字を設定します。
区切り文字は POINT , COMMA , WHITESPACE , NONE , DEFAULT が使用できます。

<span th:text="${#numbers.formatInteger(1000, 3, 'POINT')}"></span>
<span th:text="${#numbers.formatInteger(1000, 3, 'COMMA')}"></span>
<span th:text="${#numbers.formatInteger(1000, 3, 'WHITESPACE')}"></span>
<span th:text="${#numbers.formatInteger(1000, 3, 'NONE')}"></span>
<span th:text="${#numbers.formatInteger(1000, 3, 'DEFAULT')}"></span>

1.000
1,000
1 000
1000
1,000

${#numbers.sequence(from, to)}

from から to までの整数のシーケンス (配列) を作成します。こちらの記事で使用しています。

<th:block th:each="i : ${#numbers.sequence(1, 3)}">
  <span th:text="${i}"></span>
</th:block>

1
2
3

#strings

文字列 String オブジェクト用のユーティリティオブジェクトです。
文字列が空またはnullかどうかや文字列に指定した文字が含まれているかをチェックすることができます。

${#strings.isEmpty(string)}

文字列が空またはnullかをチェックします。チェック前に trim() を行います。

<span th:text="${#strings.isEmpty('text')}"></span>
<span th:text="${#strings.isEmpty(' ')}"></span>

false
true

${#strings.length(string)}

文字列の長さを計算します。空文字もカウントされます。

<span th:text="${#strings.length('text')}"></span>
<span th:text="${#strings.length('文字列')}"></span>
<span th:text="${#strings.length(' ')}"></span>
<span th:text="${#strings.length('')}"></span>

4
3
1
0

${#strings.equals(first, second)}

文字列 firstsecond をnullセーフで比較します。

<span th:text="${#strings.equals('text', 'text')}"></span>
<span th:text="${#strings.equals('text', '文字列')}"></span>

true
false

${#strings.contains(first, second)}

文字列 firstsecond が含まれているかをチェックします。

<span th:text="${#strings.contains('text', 'ex')}"></span>
<span th:text="${#strings.contains('text 文字列', ' ')}"></span>
<span th:text="${#strings.contains('text 文字列', '+')}"></span>

true
true
false

#lists

リスト用のユーティリティオブジェクトです。
リストが空かをチェックしたり、リストの要素の数を計算することができます。

${#lists.isEmpty(list)}

リストが空かをチェックします。

<span th:text="${#lists.isEmpty(list)}"></span>
<span th:text="${#lists.isEmpty(#numbers.sequence(1, 3))}"></span>

true
false

${#lists.size(list)}

リストのサイズを計算します。

<span th:text="${#lists.size(#numbers.sequence(1, 3))}"></span>

3

${#lists.contains(list, element)}

リストに element が含まれているかをチェックします。

<span th:text="${#lists.contains(#numbers.sequence(1, 3), 1)}"></span>
<span th:text="${#lists.contains(#numbers.sequence(1, 3), 5)}"></span>

true
false

お疲れさまでした

Thymeleafでユーティリティオブジェクトを使用する方法を紹介しました。
少しでも参考になれば幸いです。