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

Thymeleaf if文で空文字を判定する方法|初心者でもわかるSpring Boot入門

Thymeleaf if文で空文字を判定する方法
Thymeleaf if文で空文字を判定する方法

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

新人

「Thymeleafでif文を使って空文字を判定するにはどうしたらいいですか?」

先輩

「空文字の判定はよくある処理だね。Thymeleafのif文で空文字かどうかを判定して表示を切り替えることができるよ。Spring BootのPleiades+Gradle環境でも簡単に実装できるから安心して。」

新人

「空文字ってそもそも何ですか?それとどう違うのかも教えてほしいです!」

先輩

「空文字とは、文字が何も入っていない長さ0の文字列のことだよ。Webフォームでユーザーが何も入力しなかった場合などによく使う概念だね。nullとは違うけど、Thymeleafではどちらも扱い方を知っておく必要があるよ。」

1. Thymeleafとは?if文の基本的な役割

1. Thymeleafとは?if文の基本的な役割
1. Thymeleafとは?if文の基本的な役割

ThymeleafはSpring BootのWebアプリケーションでよく使われるテンプレートエンジンです。HTMLファイルの中にJavaの変数や条件を埋め込むことができ、動的なページ生成が可能です。

特にth:if属性は、条件式を使って要素の表示・非表示を切り替えるために使われます。たとえば、ユーザーの入力値が空文字かどうかを判定して、エラーメッセージを表示する場合に使います。

2. 空文字とは何か?Webフォームでの空文字の意味と扱い方

2. 空文字とは何か?Webフォームでの空文字の意味と扱い方
2. 空文字とは何か?Webフォームでの空文字の意味と扱い方

空文字とは、「""」のように長さ0の文字列を指します。ユーザーがフォームの入力欄を空欄のまま送信した場合、送信される値は空文字となります。

一方、nullは値が存在しないことを意味します。たとえば、変数に何もセットされていない状態がnullです。Thymeleafで空文字を判定する場合は、この空文字かどうかを条件に含めて処理を行います。

実際のフォーム入力画面で、名前欄が空だった場合に「名前は必須です」と表示したい場合、空文字判定はとても重要な処理となります。

3. Javaコントローラでの空文字のモデル設定例

3. Javaコントローラでの空文字のモデル設定例
3. Javaコントローラでの空文字のモデル設定例

Spring Bootのコントローラでは、Pleiades+Gradle環境で下記のようにモデルに入力値を渡します。今回は名前の空文字チェックを行い、空ならisNameEmptyをtrueに設定します。


package com.example.demo.controller;

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

@Controller
public class FormController {

    @GetMapping("/checkName")
    public String checkName(@RequestParam(name="name", required=false) String name, Model model) {
        boolean isNameEmpty = (name == null || name.isEmpty());
        model.addAttribute("isNameEmpty", isNameEmpty);
        model.addAttribute("name", name);
        return "formPage";
    }
}

このようにコントローラでnullや空文字を判定し、その結果をThymeleafのテンプレートに渡します。

4. Thymeleafテンプレートでの空文字判定の基本例

4. Thymeleafテンプレートでの空文字判定の基本例
4. Thymeleafテンプレートでの空文字判定の基本例

Thymeleafのテンプレートでは、渡されたisNameEmptyth:ifで判定して表示を切り替えます。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>空文字判定フォーム</title>
</head>
<body>
    <form th:action="@{/checkName}" method="get">
        <label>名前: <input type="text" name="name" th:value="${name}"/></label>
        <button type="submit">送信</button>
    </form>

    <div th:if="${isNameEmpty}" class="text-danger">
        名前は空白にできません。必ず入力してください。
    </div>
</body>
</html>

このテンプレートは、名前が空の場合のみエラーメッセージを表示します。Spring Boot + Pleiades + Gradle環境で動作確認できます。

3. Thymeleafのif文で空文字を判定する基本的な書き方

3. Thymeleafのif文で空文字を判定する基本的な書き方
3. Thymeleafのif文で空文字を判定する基本的な書き方

Thymeleafで空文字判定を行う場合、th:if属性に空文字かどうかの条件を記述します。具体的には、変数が空文字「""」と等しいかどうかを判定します。以下のような書き方が基本です。


<div th:if="${name == ''}" class="text-danger">
    名前が空です。入力してください。
</div>

この例では、モデルに渡されたname変数が空文字の場合にだけ、エラーメッセージを表示します。Spring Boot + Pleiades + Gradle環境で動作確認できます。

ただし、このままだとnullの場合は判定されません。nullが来る可能性がある場合は、後述のnullチェックを組み合わせて使うのが一般的です。

4. nullとの違いとnullチェックの方法

4. nullとの違いとnullチェックの方法
4. nullとの違いとnullチェックの方法

空文字とnullは異なります。空文字は長さ0の文字列ですが、nullは値が存在しないことを意味します。Thymeleafのif文でnullを判定する場合は、== null!= nullを使います。


<div th:if="${name == null}" class="text-danger">
    名前が入力されていません(null判定)。
</div>

null判定は重要で、nullのまま空文字判定をすると例外が発生する可能性があります。したがって、nullかどうかを先に確認してから空文字判定を行うことが推奨されます。

Spring Bootのコントローラ側でもnullチェックを行い、適切な値をモデルに渡すことで安全に表示制御が可能です。

5. 複数条件の組み合わせ例(空文字とnullの両方を判定する方法)

5. 複数条件の組み合わせ例(空文字とnullの両方を判定する方法)
5. 複数条件の組み合わせ例(空文字とnullの両方を判定する方法)

実際には、空文字かnullのどちらかの場合にエラー表示したいことが多いです。Thymeleafのif文では論理演算子「or」を使って複数条件を組み合わせられます。


<div th:if="${name == null or name == ''}" class="text-danger">
    名前が入力されていません。必ず入力してください。
</div>

この条件では、namenullまたは空文字の場合にメッセージを表示します。論理演算子はThymeleafの条件式でよく使われるので覚えておくと便利です。

下記のコントローラコードは、nameの値を受け取り、Thymeleafに渡す例です。nullや空文字も含めて判定しています。


package com.example.demo.controller;

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

@Controller
public class FormController {

    @GetMapping("/checkName")
    public String checkName(@RequestParam(name="name", required=false) String name, Model model) {
        boolean isNameEmptyOrNull = (name == null || name.isEmpty());
        model.addAttribute("isNameEmptyOrNull", isNameEmptyOrNull);
        model.addAttribute("name", name);
        return "formPage";
    }
}

Thymeleafテンプレート側では、モデルのisNameEmptyOrNullを使って判定し、エラーメッセージを表示します。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>空文字とnull判定フォーム</title>
</head>
<body>
    <form th:action="@{/checkName}" method="get">
        <label>名前: <input type="text" name="name" th:value="${name}"/></label>
        <button type="submit">送信</button>
    </form>

    <div th:if="${isNameEmptyOrNull}" class="text-danger">
        名前が空か未入力です。必ず入力してください。
    </div>
</body>
</html>

このように、Spring BootのPleiades+Gradle環境で@Controllerを使い、Thymeleafのif文で空文字とnullの両方を安全に判定できます。

6. 実務でよくある空文字判定の応用例(フォームバリデーションやエラーメッセージ表示)

6. 実務でよくある空文字判定の応用例(フォームバリデーションやエラーメッセージ表示)
6. 実務でよくある空文字判定の応用例(フォームバリデーションやエラーメッセージ表示)

実務のWeb開発では、フォーム入力に対するバリデーション処理は必須です。ユーザーが入力欄を空白のまま送信した場合、空文字判定を行い、適切なエラーメッセージを表示することが重要です。Spring BootとThymeleafの組み合わせは、こうした処理をシンプルに実装できるため、Pleiades+Gradle環境での開発に最適です。

たとえば、ユーザー登録フォームの「メールアドレス」欄が空文字だった場合、th:ifで空文字判定し、ユーザーに「メールアドレスは必須項目です」と表示します。これによりユーザビリティを向上させ、不正なデータの登録を防げます。


<div th:if="${email == null or email == ''}" class="text-danger">
    メールアドレスは必須項目です。
</div>

このようなバリデーションは、コントローラで空文字とnullをチェックし、その結果をThymeleafに渡して制御するのが基本です。論理演算子「or」を使って複数条件を組み合わせる点も重要なポイントです。

7. サンプルコードで学ぶ!実際のコントローラとThymeleafテンプレートの空文字判定

7. サンプルコードで学ぶ!実際のコントローラとThymeleafテンプレートの空文字判定
7. サンプルコードで学ぶ!実際のコントローラとThymeleafテンプレートの空文字判定

ここでは、Spring Boot + Pleiades + Gradle環境での実践例として、名前入力欄の空文字判定を行うコントローラとThymeleafテンプレートを紹介します。@Controllerを使い、シンプルながら実務に役立つ実装例です。


package com.example.demo.controller;

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

@Controller
public class UserController {

    @PostMapping("/submitForm")
    public String submitForm(@RequestParam(name="username", required=false) String username, Model model) {
        boolean isUsernameEmpty = (username == null || username.trim().isEmpty());
        model.addAttribute("isUsernameEmpty", isUsernameEmpty);
        model.addAttribute("username", username);
        return "userForm";
    }
}

このコントローラでは、ユーザー名がnullか空文字(空白のみも含む)かを判定し、isUsernameEmptyとしてビューに渡しています。次に、Thymeleafテンプレートでの表示制御例です。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>ユーザーフォーム</title>
</head>
<body>
    <form th:action="@{/submitForm}" method="post">
        <label>ユーザー名: <input type="text" name="username" th:value="${username}"/></label>
        <button type="submit">送信</button>
    </form>

    <div th:if="${isUsernameEmpty}" class="text-danger">
        ユーザー名は空白にできません。必ず入力してください。
    </div>
</body>
</html>

このテンプレートは、空文字やnullのユーザー名入力時に赤いエラーメッセージを表示します。Spring BootのPleiades+Gradle環境に適したコードで、初心者でも理解しやすい構成です。

8. 初心者がつまずきやすいポイントと学習のコツ

8. 初心者がつまずきやすいポイントと学習のコツ
8. 初心者がつまずきやすいポイントと学習のコツ

Thymeleafのif文で空文字判定をする際、初心者がよくつまずくポイントがあります。まず、nullと空文字は別物だという認識が重要です。nullを考慮しないと、実行時にエラーになる可能性があります。

また、Thymeleafの条件式では、JavaScriptの「&&」「||」は使えません。代わりに「and」「or」を使う必要があり、ここで間違えるケースが多いです。公式ドキュメントやサンプルコードを参照しながら学習しましょう。

学習のコツは、実際に自分でフォームを作成し、空文字やnullを送信して動作を確認することです。エラーメッセージが正しく表示されるかを試すことで、理解が深まります。Pleiades+Gradle環境での開発に慣れることも大切です。

最後に、条件式を複雑にしすぎず、可能な限りコントローラ側で判定処理を行い、テンプレートではシンプルなboolean値を使う設計を心がけましょう。これが保守性の高いコードを書くコツです。

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

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

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

Thymeleafでif文を使って空文字を判定するにはどう書けばいいですか?

Thymeleafのif文で空文字を判定するには、th:if属性を使って、変数が空文字("")かどうかを条件に記述します。たとえば、th:if="${name == ''}"のように書くことで、nameが空文字のときだけ表示を切り替えられます。
コメント
コメント投稿は、ログインしてください

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

関連記事:

関連記事なし

カテゴリの一覧へ
新着記事
New1
Spring認証(Spring Security)
ブラウザからのフォーム送信とは?HTTPリクエストの基礎を初心者向けに解説!
New2
Thymeleaf
ThymeleafでJavaScriptコメントを正しく書こう!初心者向け徹底解説
New3
SpringのDB操作
Spring Boot + MySQLでCRUDアプリを作ろう!初心者向けにデータベース操作を完全解説
New4
Springの基本
@SpringBootApplicationの仕組みと役割を徹底解説!初心者でもわかるSpring Bootの基本
人気記事
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の環境変数の設定方法をやさしく解説!初心者向けapplication.propertiesの使い方
No.5
Java&Spring記事人気No5
Springの基本
Spring Bootのデフォルトログ設定を徹底解説(Logback / SLF4J)
No.6
Java&Spring記事人気No6
Spring認証(Spring Security)
セッション管理の基本(@SessionAttributes)を完全解説!初心者でもわかるセッションの仕組み
No.7
Java&Spring記事人気No7
SpringのDB操作
JPAの標準クエリメソッド(findById, findAll)を完全解説!初心者でもわかるデータ取得の基本
No.8
Java&Spring記事人気No8
SpringのWeb開発(Spring MVC)
ループ処理(th:each)の基本を完全ガイド!Thymeafの繰り返し処理の使い方