カテゴリ: SpringのWeb開発(Spring MVC) 更新日: 2025/12/27

Thymeleafの標準オブジェクト(#maps, #strings)の使い方を完全ガイド!初心者でもわかる解説

Thymeleafの標準オブジェクト(#maps, #strings)
Thymeleafの標準オブジェクト(#maps, #strings)

新人と先輩の会話形式で理解しよう

新人

「Thymeleafで便利に使える標準オブジェクトって何がありますか?」

先輩

「Thymeleafには#maps#stringsといった便利な標準オブジェクトが用意されていて、テンプレート内でデータ操作が簡単にできるんだ。」

新人

「それらはどんな時に使うんですか?」

先輩

「じゃあ、#maps#stringsの基本的な使い方を具体的に見ていこう!」

1. Thymeleafの標準オブジェクトとは?

1. Thymeleafの標準オブジェクトとは?
1. Thymeleafの標準オブジェクトとは?

Thymeleafの標準オブジェクトは、テンプレート内で簡単に利用できる便利なオブジェクト群です。これにより、バックエンドで複雑な処理をせずとも、HTML内で直接データ操作や文字列操作が行えます。特に頻繁に使われるのが#maps#stringsです。

ポイント:標準オブジェクトを使うことで、コードがシンプルになり、保守性が向上します。

2. #mapsとは?

2. #mapsとは?
2. #mapsとは?

#mapsは、マップ(連想配列)の操作を簡単にするためのオブジェクトです。特定のキーが存在するか確認したり、値を取得したりすることができます。

基本的な使い方


<p th:text="${#maps.containsKey(myMap, 'name')}">プレースホルダー</p>
<p th:text="${#maps.get(myMap, 'age')}">プレースホルダー</p>

コントローラのコード例


@Controller
public class MapController {

    @GetMapping("/map-example")
    public String showMapExample(Model model) {
        Map<String, Object> myMap = new HashMap<>();
        myMap.put("name", "山田太郎");
        myMap.put("age", 30);
        model.addAttribute("myMap", myMap);
        return "mapExample";
    }
}

HTMLテンプレート(mapExample.html)のコード例


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>#mapsの使用例</title>
</head>
<body>
    <h1>#maps の基本的な使い方</h1>
    <p>名前が存在するか: <span th:text="${#maps.containsKey(myMap, 'name')}"></span></p>
    <p>年齢: <span th:text="${#maps.get(myMap, 'age')}"></span></p>
</body>
</html>

実行結果


名前が存在するか: true
年齢: 30

ポイント:#maps.containsKeyでキーの存在確認、#maps.getで値の取得が可能です。

3. #stringsとは?

3. #stringsとは?
3. #stringsとは?

#stringsは、文字列操作を簡単にするためのオブジェクトです。大文字・小文字変換、トリム、置換などがHTMLテンプレート内で簡単に実行できます。

基本的な使い方


<p th:text="${#strings.toUpperCase('hello')}">プレースホルダー</p>
<p th:text="${#strings.substring('Hello, World!', 0, 5)}">プレースホルダー</p>

コントローラのコード例


@Controller
public class StringController {

    @GetMapping("/string-example")
    public String showStringExample(Model model) {
        model.addAttribute("message", " hello world ");
        return "stringExample";
    }
}

HTMLテンプレート(stringExample.html)のコード例


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>#stringsの使用例</title>
</head>
<body>
    <h1>#strings の基本的な使い方</h1>
    <p>大文字変換: <span th:text="${#strings.toUpperCase(message)}"></span></p>
    <p>トリム後: <span th:text="${#strings.trim(message)}"></span></p>
</body>
</html>

実行結果


大文字変換:  HELLO WORLD
トリム後: hello world

ポイント:#stringsはテンプレート内での文字列処理を大幅に簡略化してくれます。

4. #mapsの具体的な使用例

4. #mapsの具体的な使用例
4. #mapsの具体的な使用例

#mapsは、連想配列(Map)の操作に便利なメソッドを提供します。ここでは、キーの存在確認、値の取得、サイズの確認、空チェックなど、実際に使用される場面での使い方を紹介します。

コントローラのコード例


@Controller
public class MapExampleController {

    @GetMapping("/map-usage")
    public String showMapUsage(Model model) {
        Map<String, Object> userInfo = new HashMap<>();
        userInfo.put("username", "tanaka");
        userInfo.put("email", "tanaka@example.com");
        userInfo.put("age", 25);

        model.addAttribute("userInfo", userInfo);
        return "mapUsage";
    }
}

HTMLテンプレート(mapUsage.html)のコード例


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>#mapsの具体的な使用例</title>
</head>
<body>
    <h1>#maps の具体的な使用例</h1>
    <p>ユーザー名が存在するか: <span th:text="${#maps.containsKey(userInfo, 'username')}"></span></p>
    <p>メールアドレス: <span th:text="${#maps.get(userInfo, 'email')}"></span></p>
    <p>ユーザー情報の項目数: <span th:text="${#maps.size(userInfo)}"></span></p>
    <p>マップが空かどうか: <span th:text="${#maps.isEmpty(userInfo)}"></span></p>
</body>
</html>

実行結果


ユーザー名が存在するか: true
メールアドレス: tanaka@example.com
ユーザー情報の項目数: 3
マップが空かどうか: false

ポイント:#mapsを使うことで、テンプレート内で柔軟にマップデータを扱えます。特に、フォームデータやAPIレスポンスを扱う際に便利です。

5. #stringsの具体的な使用例

5. #stringsの具体的な使用例
5. #stringsの具体的な使用例

#stringsは、文字列の変換や操作に役立つメソッドが豊富に揃っています。以下に、頻繁に使われる文字列操作の実例を示します。

コントローラのコード例


@Controller
public class StringExampleController {

    @GetMapping("/string-usage")
    public String showStringUsage(Model model) {
        model.addAttribute("sampleText", " Thymeleaf Example ");
        model.addAttribute("email", "user@example.com");
        return "stringUsage";
    }
}

HTMLテンプレート(stringUsage.html)のコード例


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>#stringsの具体的な使用例</title>
</head>
<body>
    <h1>#strings の具体的な使用例</h1>
    <p>元の文字列: <span th:text="${sampleText}"></span></p>
    <p>トリム後: <span th:text="${#strings.trim(sampleText)}"></span></p>
    <p>小文字変換: <span th:text="${#strings.toLowerCase(sampleText)}"></span></p>
    <p>大文字変換: <span th:text="${#strings.toUpperCase(sampleText)}"></span></p>
    <p>メールのドメイン部分: <span th:text="${#strings.substringAfter(email, '@')}"></span></p>
</body>
</html>

実行結果


元の文字列:  Thymeleaf Example 
トリム後: Thymeleaf Example
小文字変換:  thymeleaf example 
大文字変換:  THYMELEAF EXAMPLE 
メールのドメイン部分: example.com

ポイント:テンプレート内で文字列操作が直接できるため、バックエンドでの余計な処理が不要になります。特に、表示用の文字列整形に便利です。

6. #maps と #strings の使い分け

6. #maps と #strings の使い分け
6. #maps と #strings の使い分け

#maps#stringsは、それぞれ異なる目的で使用されますが、実際の開発では両方を組み合わせて使う場面が多くあります。ここでは、具体的な使い分け方を説明します。

#mapsを使用するケース

  • オブジェクトや連想配列のデータをテンプレートで処理したいとき
  • フォームデータやAPIレスポンスから特定の値を取り出したいとき
  • キーの存在確認やデータの数を確認したいとき

#stringsを使用するケース

  • 表示用の文字列を整形したいとき(トリム、置換、大文字・小文字変換など)
  • ユーザー名やメールアドレスの一部を抽出したいとき
  • 文字列の結合や特定の部分を取得したいとき

組み合わせの例


<p th:text="${#strings.toUpperCase(#maps.get(userInfo, 'username'))}">ユーザー名表示</p>

実行結果


TANAKA

ポイント:#mapsで値を取得し、#stringsで文字列操作を行うことで、テンプレート内で柔軟な処理が可能です。

7. #maps と #strings を使用する際の注意点

7. #maps と #strings を使用する際の注意点
7. #maps と #strings を使用する際の注意点

Thymeleaf標準オブジェクトである#maps#stringsは便利ですが、使用する際にはいくつかの注意点があります。以下に初心者でも理解しやすいように、よくある注意点をまとめました。

#maps の注意点

  • キーが存在しない場合はnullが返る:存在しないキーを取得しようとするとnullが返るため、テンプレートで直接表示すると"null"と表示されることがあります。#maps.containsKeyで事前に確認しましょう。
  • ネストされたマップに注意:深い階層のマップを扱う場合、キーの指定を間違えないようにしてください。
  • NullPointerExceptionを防ぐ:マップ自体がnullの時にアクセスするとエラーになるので、#maps.isEmptyでのチェックが推奨されます。

#strings の注意点

  • null値処理に注意:#strings.trim(null)のようにnullを渡すと、空文字が返りますが、期待する挙動か確認が必要です。
  • パフォーマンスに注意:大量の文字列処理をテンプレート内で行うと、レンダリングが遅くなることがあります。必要に応じてコントローラ側で処理しましょう。
  • インジェクションのリスク:ユーザー入力を直接表示する際は、HTMLエスケープされることを確認してください。th:textは自動エスケープされますが、th:utextはエスケープされないため注意が必要です。

8. 実践!簡単なWebアプリケーションに標準オブジェクトを活用してみよう

8. 実践!簡単なWebアプリケーションに標準オブジェクトを活用してみよう
8. 実践!簡単なWebアプリケーションに標準オブジェクトを活用してみよう

ここでは、実際に#maps#stringsを組み合わせて使用する簡単なWebアプリケーションを作成してみましょう。ユーザー情報を表示しつつ、文字列整形を行います。

ステップ1: コントローラの作成


@Controller
public class UserController {

    @GetMapping("/user-info")
    public String showUserInfo(Model model) {
        Map<String, Object> userInfo = new HashMap<>();
        userInfo.put("username", " yamada ");
        userInfo.put("email", "yamada@example.com");
        userInfo.put("age", 28);

        model.addAttribute("userInfo", userInfo);
        return "userInfo";
    }
}

ステップ2: HTMLテンプレートの作成(userInfo.html)


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>ユーザー情報の表示</title>
</head>
<body>
    <h1>ユーザー情報</h1>
    <p>ユーザー名(トリム後、大文字変換): <span th:text="${#strings.toUpperCase(#strings.trim(#maps.get(userInfo, 'username')))}"></span></p>
    <p>メールアドレス: <span th:text="${#maps.get(userInfo, 'email')}"></span></p>
    <p>メールドメイン部分: <span th:text="${#strings.substringAfter(#maps.get(userInfo, 'email'), '@')}"></span></p>
    <p>年齢: <span th:text="${#maps.get(userInfo, 'age')}"></span></p>
</body>
</html>

ステップ3: 実行結果


ユーザー名(トリム後、大文字変換): YAMADA
メールアドレス: yamada@example.com
メールドメイン部分: example.com
年齢: 28

ポイント:

  • #maps.getでデータを取得し、#stringsで文字列整形を行っています。
  • ユーザー名のトリムと大文字変換を同時に行うことで、表示を整えています。
  • メールアドレスからドメイン部分を抽出し、テンプレート内で簡潔に処理しています。

9. まとめ(#maps と #strings のポイント復習)

9. まとめ(#maps と #strings のポイント復習)
9. まとめ(#maps と #strings のポイント復習)

この記事では、Thymeleafの標準オブジェクトである#maps#stringsの基本的な使い方から実践的な活用方法まで解説しました。

振り返りポイント

  • #maps: 連想配列の値取得やキーの存在確認に便利。データの項目数や空チェックも可能。
  • #strings: 文字列整形(トリム、大文字・小文字変換、部分抽出など)が簡単にできる。
  • テンプレート内で#maps#stringsを組み合わせることで、バックエンドでの処理を減らし、保守性が向上。
  • 使用時はnull値やインジェクションリスクに注意すること。

今回の実践例を通じて、#maps#stringsの実用的な使い方を理解できたと思います。これからの開発で積極的に活用し、コードの簡略化と効率化を目指してください!

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Thymeleafの標準オブジェクトとは何ですか?

Thymeleafの標準オブジェクトとは、テンプレート内で簡単に使える組み込みオブジェクトのことで、代表的なものに#mapsと#stringsがあります。これらを使うことで、HTMLテンプレート内でMapや文字列を効率的に操作できます。
コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
New1
Spring認証(Spring Security)
Spring BootでCORSを設定する方法を完全解説!初心者でもわかるセキュリティ対策
New2
Spring認証(Spring Security)
パスワードをハッシュ化する理由とは?セキュリティ対策の基本をSpring Securityで学ぼう
New3
SpringのWeb開発(Spring MVC)
HTTPリクエストとレスポンスの基本を完全解説!Spring MVC初心者がWeb通信の仕組みをやさしく理解
New4
Spring認証(Spring Security)
ブラウザからのフォーム送信とは?HTTPリクエストの基礎を初心者向けに解説!
人気記事
No.1
Java&Spring記事人気No1
SpringのWeb開発(Spring MVC)
ルーティングとは?基本概念(Spring MVCのURL制御を理解)
No.2
Java&Spring記事人気No2
Thymeleaf
Thymeleaf とは?初心者向けにThymeleafの基本を徹底解説
No.3
Java&Spring記事人気No3
Springの基本
application.properties と YAML の基本をやさしく解説!初心者向けSpring Boot設定ファイル入門
No.4
Java&Spring記事人気No4
Springの基本
Spring Bootのデフォルトログ設定を徹底解説(Logback / SLF4J)
No.5
Java&Spring記事人気No5
Springの基本
Spring Bootの環境変数の設定方法をやさしく解説!初心者向けapplication.propertiesの使い方
No.6
Java&Spring記事人気No6
SpringのWeb開発(Spring MVC)
ループ処理(th:each)の基本を完全ガイド!Thymeafの繰り返し処理の使い方
No.7
Java&Spring記事人気No7
SpringのDB操作
JPAの標準クエリメソッド(findById, findAll)を完全解説!初心者でもわかるデータ取得の基本
No.8
Java&Spring記事人気No8
Spring認証(Spring Security)
セッション管理の基本(@SessionAttributes)を完全解説!初心者でもわかるセッションの仕組み