カテゴリ: Thymeleaf 更新日: 2026/01/02

Thymeleafのif文とunlessの組み合わせ例!初心者でもわかる条件分岐

Thymeleaf if文とunlessの組み合わせ例
Thymeleaf if文とunlessの組み合わせ例

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

新人

「先輩、Thymeleafで条件分岐をする方法ってあるんですか?」

先輩

「もちろんだよ!Thymeleafではth:if属性やth:unless属性を使って、HTML内で条件分岐を表現できるんだ。Spring Bootの@Controllerクラスで準備したデータを、PleiadesのGradle環境で実行すると便利だよ。」

新人

「なるほど!でも、th:ifth:unlessの違いって何ですか?」

先輩

「いい質問だね。じゃあ、th:ifth:unlessの役割と使い方を一緒に見ていこう!」

1. Thymeleafのif文とは?基本的な使い方

1. Thymeleafのif文とは?基本的な使い方
1. Thymeleafのif文とは?基本的な使い方

Spring Bootアプリケーションで、Thymeleafのth:if属性を使うと、条件が「真(true)」のときにそのHTMLタグが表示されます。つまり、th:ifは「もし〇〇なら表示する」という条件分岐を担当します。

例えば、コントローラの@Controllerクラスで次のようにモデルデータを渡したとします。


@Controller
public class SampleController {
    @GetMapping("/example")
    public String example(Model model) {
        model.addAttribute("isVisible", true);
        return "example";
    }
}

このとき、ThymeleafのHTMLファイルでth:ifを使う例は以下のようになります。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Thymeleafの条件分岐</title>
</head>
<body>
    <div th:if="${isVisible}">
        <p>このメッセージはisVisibleがtrueのときにだけ表示されます。</p>
    </div>
</body>
</html>

ここでは、コントローラから渡されたisVisibletrueのときだけ、<div>の中身が表示されます。PleiadesのGradleプロジェクトでビルド&実行すると、簡単に条件分岐を確認できます。

2. unless属性とは何か?if文との違いと役割

2. unless属性とは何か?if文との違いと役割
2. unless属性とは何か?if文との違いと役割

Thymeleafにはth:unless属性もあります。これは「条件が偽(false)のときに表示する」という逆の働きを持っています。つまり、条件が成り立たないときに表示したい場合に使います。

先ほどと同じ@Controllerのサンプルを使い、th:unlessの例を見てみましょう。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Thymeleaf unlessの例</title>
</head>
<body>
    <div th:unless="${isVisible}">
        <p>このメッセージはisVisibleがfalseのときにだけ表示されます。</p>
    </div>
</body>
</html>

th:unlessを使うと、条件が偽の場合に表示されるHTML要素を簡単に記述できます。th:ifth:unlessを上手に使い分けることで、Spring Bootアプリケーション内の画面制御がわかりやすくなります。

また、th:ifth:unlessを組み合わせて使うこともできます。例えば次のように、ある変数がtrueならAの要素を表示し、falseならBの要素を表示する場合です。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Thymeleaf if文とunlessの組み合わせ</title>
</head>
<body>
    <div th:if="${isVisible}">
        <p>表示されるメッセージA</p>
    </div>
    <div th:unless="${isVisible}">
        <p>表示されるメッセージB</p>
    </div>
</body>
</html>

このように、th:ifth:unlessを組み合わせることで、複雑な条件分岐でもシンプルに記述できます。PleiadesのGradleプロジェクトで作成したSpring Bootアプリケーションでも、この条件分岐の仕組みを活かして、動的な画面制御を実現できます。

Spring Bootの@Controllerクラスで受け取るリクエストパラメータや、サービスクラスの結果をそのままビューに反映できるので、Thymeleafの条件分岐はとても便利です。

ぜひ、自分のSpring Bootアプリケーションでth:ifth:unlessを組み合わせて、動的なHTMLの表示を試してみてくださいね!

3. if文とunlessの組み合わせでよくある使い方例

3. if文とunlessの組み合わせでよくある使い方例
3. if文とunlessの組み合わせでよくある使い方例

ここからは、Thymeleafのth:ifth:unlessを組み合わせてよく使うパターンを見ていきましょう。Spring Bootアプリケーションの中で、@Controllerクラスから複数のデータをビューに渡す場面は多いですよね。PleiadesのGradle環境で開発している場合も、同じやり方で条件式を適用できます。

例えば、ユーザーがログインしているかどうかを表すisLoggedInという変数を@Controllerで渡した場合、以下のようにth:ifth:unlessを組み合わせることで、ログイン状態によって表示内容を変えられます。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>ログイン状態の分岐例</title>
</head>
<body>
    <div th:if="${isLoggedIn}">
        <p>ようこそ、ユーザーさん!ログイン中です。</p>
    </div>
    <div th:unless="${isLoggedIn}">
        <p>ログインしていません。ログインしてください。</p>
    </div>
</body>
</html>

このような使い方は、Webアプリケーション開発では非常に一般的です。ユーザーごとに違う情報を見せたい場合などに、th:ifth:unlessの組み合わせはとても役立ちます。Spring Bootの@Controllerから条件の値を設定して、Thymeleafで画面を切り替えられる仕組みはとても便利です。

4. 複雑な条件をifとunlessで使い分ける方法

4. 複雑な条件をifとunlessで使い分ける方法
4. 複雑な条件をifとunlessで使い分ける方法

次に、複雑な条件式を使いたい場合について見ていきましょう。Thymeleafでは、th:ifth:unlessに単純なtrue/falseだけではなく、条件式も記述できます。例えば、数値の大小や文字列の比較も簡単に書けます。

コントローラで渡された数値scoreが60以上かどうかを判定して、条件式を使い分ける例です。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>スコア判定例</title>
</head>
<body>
    <div th:if="${score &gt;= 60}">
        <p>合格おめでとうございます!</p>
    </div>
    <div th:unless="${score &gt;= 60}">
        <p>残念ですが不合格です。もう一度チャレンジしてください。</p>
    </div>
</body>
</html>

このように、条件式を使うことで、動的な画面制御を柔軟に行えます。特にSpring Bootアプリケーションでは、@Controllerクラスからのデータに応じてHTMLを出し分けることが大切です。PleiadesのGradleプロジェクトでコーディングするときも、この書き方を使えば分岐をシンプルに記述できます。

また、条件が複雑になったときは、できるだけth:ifth:unlessの条件式を見やすく整えておくと可読性が上がります。

5. 実際のSpring Bootコントローラでのデータ渡しとThymeleafテンプレートの連携例

5. 実際のSpring Bootコントローラでのデータ渡しとThymeleafテンプレートの連携例
5. 実際のSpring Bootコントローラでのデータ渡しとThymeleafテンプレートの連携例

最後に、実際の@Controllerクラスでのデータ渡しと、Thymeleafテンプレートでの条件分岐を組み合わせる例を見ていきましょう。PleiadesのGradleプロジェクトで開発するときも、このやり方を使うことで条件分岐が直感的に記述できます。

まずは、Spring Bootの@Controllerクラスの例です。


@Controller
public class UserController {
    @GetMapping("/user/status")
    public String userStatus(Model model) {
        boolean isLoggedIn = true; // 本来はサービスなどで判定
        int score = 75;
        model.addAttribute("isLoggedIn", isLoggedIn);
        model.addAttribute("score", score);
        return "status";
    }
}

この@Controllerでは、isLoggedInscoreという二つのデータをビューに渡しています。Thymeleafテンプレート側では、th:ifth:unlessを組み合わせて条件分岐を行います。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>ユーザー状態表示</title>
</head>
<body>
    <div th:if="${isLoggedIn}">
        <p>ユーザーはログイン中です。</p>
        <div th:if="${score &gt;= 60}">
            <p>試験に合格しました!スコアは[[${score}]]点です。</p>
        </div>
        <div th:unless="${score &gt;= 60}">
            <p>残念ですが不合格です。スコアは[[${score}]]点です。</p>
        </div>
    </div>
    <div th:unless="${isLoggedIn}">
        <p>ログインしていません。ログインしてください。</p>
    </div>
</body>
</html>

このサンプルでは、ユーザーがログイン中かどうか、さらにスコアが60点以上かどうかで表示内容を分岐しています。PleiadesのGradle環境でこのコードをビルドして実行すれば、画面で条件分岐の動作をしっかり確認できます。

Spring Bootアプリケーションでは、@Controllerクラスで必要な情報をModelにセットし、Thymeleafテンプレートでth:ifth:unlessを使って条件に応じた表示を行うのが基本の形です。

今回紹介したように、Thymeleafの条件分岐はとても直感的で初心者にもわかりやすいです。実際に自分のアプリケーションで条件を切り替えて、いろいろ試してみてください。PleiadesのGradle環境とSpring Bootの組み合わせは、Thymeleafの学習に最適です。

6. if文とunlessの組み合わせによる実務でのメリット

6. if文とunlessの組み合わせによる実務でのメリット
6. if文とunlessの組み合わせによる実務でのメリット

Thymeleafでth:ifth:unlessを組み合わせると、実務で次のようなメリットがあります。

  • コードがすっきり:SQLやJavaで条件判定を分けずに、ビューで表示制御できて見た目がわかりやすくなる
  • メンテナンス性UP:条件に関するロジックがテンプレートに集約されるので、@Controllerやサービス層を変更せずに対応できる
  • デザインとの分離:Pleiades+Gradle環境でも、条件分岐だけHTML側で扱えるので、フロントエンジニアが簡単に微調整できる

たとえば、ユーザー権限やエラーメッセージに応じて表示要素を切り替えたいとき、th:ifth:unlessの組み合わせはコードを明確にし、Spring Bootアプリ全体の構造も整理できます。

7. 具体的な応用例(エラーメッセージ表示や表示制御など)

7. 具体的な応用例(エラーメッセージ表示や表示制御など)
7. 具体的な応用例(エラーメッセージ表示や表示制御など)

ここでは実務でよく使う「エラーメッセージ表示」と「表示制御」のパターンを紹介します。

まずはコントローラでエラーメッセージをModelにセットする例。


@Controller
public class FormController {
    @PostMapping("/submit")
    public String handleSubmit(@RequestParam String name, Model model) {
        if(name == null || name.isEmpty()) {
            model.addAttribute("error", "名前は必須です");
        }
        model.addAttribute("name", name);
        return "formResult";
    }
}

次に、Thymeleafテンプレートでエラーメッセージを条件分岐して表示します。th:ifth:unlessを組み合わせています。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>エラー表示例</title></head>
<body>
    <div th:if="${error}">
        <p th:text="${error}">エラー内容</p>
    </div>
    <div th:unless="${error}">
        <p th:text="'ようこそ、' + ${name} + ' さん'">こんにちは</p>
    </div>
</body>
</html>

上の例では、errorがある場合のみエラーメッセージが表示され、ない場合は挨拶メッセージが表示されます。この応用は実務のフォーム処理などで非常に多いパターンです。

また、エラー以外にも次のような場面で条件分岐が使えます。

  • ユーザーがADMINかどうかでボタンの表示切り替え
  • リストが空かどうかで「データなし」メッセージを表示
  • Spring BootのForm validationのth:errorsと組み合わせるUI表示

こういった表示制御は、本番でのユーザー体験を向上させるためにとても重要ですし、th:ifth:unlessの併用が効果的に使われています。

8. 学習のコツと初心者へのアドバイス

8. 学習のコツと初心者へのアドバイス
8. 学習のコツと初心者へのアドバイス

最後に、Thymeleafのif文unlessを学ぶときのコツと、初心者におすすめの進め方を紹介します。

  • まずは基本から:最初はth:ifth:unlessを単独で試して、条件がtrue/falseで表示がどう変わるか確認しましょう
  • 組み合わせて整理:ログイン状況やスコア、エラーなどを複合するときは、HTMLを2つに分けて見通しよく書く工夫が大切
  • 実務で試す:Pleiades+Gradle環境でSpring BootのForm validationやエラーメッセージと一緒に使えば、書いた分岐がそのまま役に立ちます
  • 公式ドキュメントで調べる:Thymeleaf公式は,条件式やロジックの詳細が載っていて参考になります :contentReference[oaicite:0]{index=0}
  • 他のメソッドや演算子も併用:文字列比較(==eq)、論理演算子(and/or)、EL関数(#strings)は便利対応力UPに使えます :contentReference[oaicite:1]{index=1}
  • StackOverflowで検索:具体的なエラーやパターンを探すと、「th:if」と「th:unless」のベストプラクティスが学べます :contentReference[oaicite:2]{index=2}

Thymeleafの条件分岐は、HTMLを書く感覚でJavaロジックを画面に映す点が魅力です。Spring Bootの@Controllerと組み合わせることで、実際のWebアプリ開発にも活かせます。

最初はわかりにくいかもしれませんが、コードを書いて確認しているうちに自然と使い方が身につくので、ぜひPleiades+Gradle+Spring Bootの環境で実際に動かして試してみてください!

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

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

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

Thymeleafのth:ifとは何ですか?初心者向けに教えてください

Thymeleafのth:ifは、Spring Bootアプリケーションの中で条件がtrueのときにHTML要素を表示するための属性です。HTML内で条件分岐ができるので、特定の条件に応じた画面表示を実現できます。
コメント
コメント投稿は、ログインしてください

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

関連記事:

関連記事なし

カテゴリの一覧へ
新着記事
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の繰り返し処理の使い方