カテゴリ: Thymeleaf 更新日: 2025/12/19

Thymeleaf 変数 null判定と初期化の方法を完全ガイド!初心者でも安心

Thymeleaf 変数 null判定と初期化の方法
Thymeleaf 変数 null判定と初期化の方法

新人と先輩の会話でわかりやすく

新人

「Thymeleafで変数がnullだったときにどうやって安全に処理すればいいんでしょうか?」

先輩

「null判定や初期化を使えば、未定義エラーを防げるよ。HTML表示もスムーズになるし、初心者でも安心して使える方法があるんだ」

新人

「具体的にはどう書けばいいですか?」

先輩

「まずはnull判定の基本から見ていこう!」

1. null判定とは?

1. null判定とは?
1. null判定とは?

null判定とは、サーバー側から渡された変数がnull(値なし)かどうかを確認し、安全に処理を分岐させる仕組みです。Thymeleafではテンプレート内でnullチェックを行うことで、表示エラーを回避できます。初心者でも扱いやすい書き方があるので、まずは基本構文を知っておきましょう。

1‑1. nullを放置するとどうなる?

ControllerでModel.addAttributeした変数がnullの場合、HTML側でth:text="${name}"のように使うと空文字になるか、EL例外が発生する可能性があります。これを防ぐために、null判定を使いましょう。

2. Thymeleafでのnull判定の書き方

2. Thymeleafでのnull判定の書き方
2. Thymeleafでのnull判定の書き方

ThymeleafではNULLチェックにOGNLの安全ナビゲーション演算子や三項演算子を使う方法があります。以下の例で使い方を確認しましょう。

2‑1. 三項演算子でnull判定

コントローラ側でModelに値を登録し、テンプレート内で三項演算子を使ってnullかどうかで初期化や表示を切り替えます。


@GetMapping("/greet")
public String greet(Model model) {
    String name = null;  // 例: nullの場合もありうる
    model.addAttribute("name", name);
    return "greet";
}

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>null判定例</title></head>
<body>
  <p th:text="${name} != null ? ${name} : 'ゲスト'">ここに名前かゲストが入ります</p>
</body>
</html>

このように? :を使えば、nullなら「ゲスト」と表示され、安心して使えます。

2‑2. デフォルト値を設定する書き方

三項演算子以外にも、OGNLの演算子?:を使って簡単に初期値を指定できます。


<p th:text="${name} ?: 'ゲスト'">ここにデフォルト値が入ります</p>

こちらはよりシンプルにnullチェックと初期化ができる書き方です。

3. null判定での三項演算子の使い方

3. null判定での三項演算子の使い方
3. null判定での三項演算子の使い方

三項演算子(? :)を使えば、nullかどうかで処理を簡潔に切り替えられます。初心者でも読みやすく、安全なコードになります。

3‑1. 基本形:nullかどうかを判定する


@GetMapping("/check")
public String check(Model model) {
    String info = null;
    model.addAttribute("info", info);
    return "check";
}

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>null判定チェック</title></head>
<body>
  <p th:text="${info} != null ? ${info} : '情報がありません'">ここに値かメッセージが入ります</p>
</body>
</html>

このように書けば、infoがnullなら「情報がありません」と表示されます。画面エラーを防ぐ基本的な方法です。

3‑2. 異なる値の初期化も可能

三項演算子では、null時だけではなく値によって初期化することもできます。柔軟な値設定に便利です。


<p th:text="${count} != null ? '個数: ' + ${count} : '個数未設定'">ここにカウント情報が入ります</p>

4. null時の初期化(デフォルト値の設定)の具体例

4. null時の初期化(デフォルト値の設定)の具体例
4. null時の初期化(デフォルト値の設定)の具体例

デフォルト値を設定すれば、nullに悩まずに済みます。ここでは、より分かりやすい例を使って説明します。

4‑1. OGNLのまるごと代替演算子

OGNLの?:を使えば、nullでも安全に表示できます。式が短く、初心者にも読めるようになります。


<p th:text="${userName} ?: '名前が設定されていません'">ここに名前が入ります</p>

上記ならnull時に「名前が設定されていません」と表示され、安全対策できます。

4‑2. 数値やリストにも初期化を設定

数値やリストもnull判定と初期化ができます。コレクションがnullの場合に空リストを表示するなど、画面の安定にもつながります。


@GetMapping("/items")
public String items(Model model) {
    List<String> list = null;
    model.addAttribute("list", list);
    return "items";
}

<ul>
  <li th:each="i : ${list} ?: ${T(java.util.Collections).emptyList()}">
    <span th:text="${i}">アイテム名</span>
  </li>
</ul>

listがnullなら空リストに置き換え、ループのエラーを回避しています。画面が崩れなくなる工夫です。

5. 注意点とエラー回避のコツ

5. 注意点とエラー回避のコツ
5. 注意点とエラー回避のコツ

null判定や初期化にはいくつか注意点があります。実際の開発で使うときに知っておきたいポイントを紹介します。

5‑1. NullPointerExceptionの回避

安全ナビゲーションや三項演算子なしで${user.name}のようなアクセスをすると、名前がnullのときに例外が発生します。常にnullチェックを忘れずに。

5‑2. 初期化はController側でも可能

初期化はテンプレート側だけでなく、Controller側で行っても構いません。業務ロジックが明確になるので、チーム開発ではControllerで初期化する方が設計しやすいこともあります。

5‑3. テキスト内で式を多用しない工夫

式を多く書くとテンプレートが読みにくくなるため、長い式はControllerで計算・初期化してModelで渡すことで、HTMLがすっきりし、維持管理しやすくなります。

5‑4. Pleiades環境での確認ポイント

Pleiades+Gradle環境では、変更後に必ずGradleのリソース更新を実行してください。テンプレートが古いままだと、null判定や初期化が反映されずにデバッグに時間がかかることがあります。

6. よくある質問とその答え(初心者が迷いやすいポイントをやさしく説明)

6. よくある質問とその答え(初心者が迷いやすいポイントをやさしく説明)
6. よくある質問とその答え(初心者が迷いやすいポイントをやさしく説明)

ここでは、初心者がThymeleafのnull判定と初期化でよく疑問に思うポイントをまとめて、わかりやすく解説します。

6‑1. 三項演算子と?:演算子はどちらが便利?

どちらもnull判定や初期化に使えますが、?:演算子はよりシンプルで読みやすいです。三項演算子は条件に応じて2種類の値を切り替えたいときに便利です。使う場面に応じて選びましょう。

6‑2. null判定は必ず必要?

はい、特に画面でデータが表示されないと困る場面では必要です。Controllerでnullが入り得る値は、必ずテンプレート内で判定しておくと安全です。

6‑3. リストがnullのときはどうしたらいい?

空リストを代入することで、Thymeleafのループ処理でもエラーを防げます。以下のように書いておくと安心です。


<ul>
  <li th:each="i : ${list} ?: ${T(java.util.Collections).emptyList()}">
    <span th:text="${i}">アイテム</span>
  </li>
</ul>

6‑4. null判定をしても値が表示されないことがある?

モデルに渡した変数名が違う場合や、HTMLでth:textの書き方が間違っていると、nullでなくても値が表示されません。正しい変数名や属性名を使っているか確認しましょう。

7. 学習を深めるためのおすすめ情報(公式ドキュメントやサンプルなど)

7. 学習を深めるためのおすすめ情報(公式ドキュメントやサンプルなど)
7. 学習を深めるためのおすすめ情報(公式ドキュメントやサンプルなど)

最後に、Thymeleafのnull判定や初期化についてもっと理解を深めるためのリソースを紹介します。Pleiadesで開発する際も役立ちます。

7‑1. 公式ドキュメント

Thymeleafの公式サイトには、変数やスコープ、式の使い方が詳しく載っています。null判定のほかにもたくさんの使い方が書かれているので、以下のページを読んでみてください。

7‑2. 実践サンプルを自分で作ろう

Pleiades+Gradleで簡単なサンプルプロジェクトを作り、実際に三項演算子や?:演算子を使ってみましょう。自分で試すと理解が深まります。

7‑3. @Controllerのサンプルコード

以下は練習用に簡単なControllerの例です。Pleiadesでプロジェクトを作成し、このコードを試してみてください。


package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class NullCheckController {

  @GetMapping("/demo")
  public String demo(Model model) {
    String userName = null;  // わざとnullにしておく
    model.addAttribute("userName", userName);
    return "demo";
  }
}

7‑4. Pleiadesでのプロジェクト作成ポイント

  • Pleiadesをインストール後、Gradleプロジェクトを新規作成
  • 依存関係で「Spring Web」を追加
  • Thymeleafのスターターは自動で含まれるので、特別な設定は不要

この基本手順を守れば、すぐにThymeleafのnull判定のサンプルが動かせます。

7‑5. さらに学びを深めるポイント

  • Controllerでの初期化処理と画面表示の役割を整理する
  • 公式チュートリアルを実際に写経してみる
  • ログを活用して、変数がどのタイミングでnullになるか調べる

これらを繰り返すことで、初心者でも安心してThymeleafのnull判定を使いこなせます。

Thymeleafの変数null判定と初期化は、Webアプリケーション開発で必須のテクニックです。Pleiades+Gradle環境で練習しながら、確実に習得していきましょう!

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

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

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

Thymeleafでnull判定とは何ですか?初心者にもわかりやすく教えてください

Thymeleafでのnull判定とは、変数に値があるか(nullでないか)をチェックすることで、エラーを防ぎ、安全にWeb画面へ値を表示するための方法です。テンプレート内でnullをそのまま扱うと表示エラーになるため、初心者にも必須の知識です。
コメント
コメント投稿は、ログインしてください

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

カテゴリの一覧へ
新着記事
New1
Springの基本
Spring Bootの@ConfigurationPropertiesScanとは?設定クラス自動検出の仕組みを解説
New2
SpringのAPI開発(REST & GraphQL)
Spring Boot GraphQLでResolverを理解しよう!初心者でもわかるデータ取得の基本
New3
SpringのAPI開発(REST & GraphQL)
Spring Boot GraphQL入門!Query・Mutation・Subscriptionの基本を初心者向けに解説
New4
SpringのDB操作
JPQLのパラメータバインド(:name / ?1)の使い方を完全解説!初心者でも迷わない基本の考え方
人気記事
No.1
Java&Spring記事人気No1
Thymeleaf
Thymeleaf とは?初心者向けにThymeleafの基本を徹底解説
No.2
Java&Spring記事人気No2
SpringのWeb開発(Spring MVC)
DispatcherServletの仕組みを理解する!初心者向け完全ガイド
No.3
Java&Spring記事人気No3
Springの基本
Spring Bootのデフォルトログ設定を徹底解説(Logback / SLF4J)
No.4
Java&Spring記事人気No4
SpringのDB操作
JPAの標準クエリメソッド(findById, findAll)を完全解説!初心者でもわかるデータ取得の基本
No.5
Java&Spring記事人気No5
SpringのWeb開発(Spring MVC)
Spring Bootでの@GetMappingと@PostMappingの基本を完全解説!初心者でも理解できる使い方
No.6
Java&Spring記事人気No6
Spring認証(Spring Security)
セッション管理の基本(@SessionAttributes)を完全解説!初心者でもわかるセッションの仕組み
No.7
Java&Spring記事人気No7
SpringのWeb開発(Spring MVC)
@Controller と @RestController の違いを完全解説!初心者向けSpring MVC入門
No.8
Java&Spring記事人気No8
SpringのWeb開発(Spring MVC)
ループ処理(th:each)の基本を完全ガイド!Thymeafの繰り返し処理の使い方