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

Thymeleafでif複数条件をまとめて処理する方法を初心者向けに解説

Thymeleaf if複数条件をまとめて処理する方法
Thymeleaf if複数条件をまとめて処理する方法

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

新人

「先輩、Thymeleafでif文の条件を複数まとめて書きたいんですが、どんなふうに書くんですか?」

先輩

「Thymeleafでは、複数条件をandorでつなげてまとめて書くことができますよ。」

新人

「複数条件をうまく使うコツってありますか?」

先輩

「もちろんあります。まずは、if文の基本と複数条件の書き方をしっかり押さえるのが大事です。順番に見ていきましょう!」

1. Thymeleafのif文の基本(th:ifの役割)

1. Thymeleafのif文の基本(th:ifの役割)
1. Thymeleafのif文の基本(th:ifの役割)

Thymeleafは、Spring Bootアプリケーションで使われるテンプレートエンジンで、HTMLファイルにJavaのデータを埋め込む仕組みを提供しています。開発環境は、Pleiadesを使い、Gradleでプロジェクトを作成して進めることが一般的です。コントローラは@Controllerを使い、Modelに値をセットしてHTMLに渡します。

Thymeleafのif文は、HTMLの要素にth:if属性を付けて条件分岐を行います。例えば、コントローラから渡された変数messageがnullではないときだけ表示するには、次のように書きます。


<p th:if="${message != null}" th:text="${message}">ここにメッセージが表示されます。</p>

このように、th:ifは条件がtrueの場合に要素を表示する役割があります。条件がfalseの場合は、要素自体がレンダリングされません。初心者の方は、まずこの基本構文をしっかり理解しておくことが大切です。

2. if文で複数条件をまとめて書く方法の概要

2. if文で複数条件をまとめて書く方法の概要
2. if文で複数条件をまとめて書く方法の概要

Thymeleafでは、if文の条件に複数の条件をまとめて書くことができます。複数条件を使うことで、例えば「AもBも条件を満たすときだけ表示する」といった複雑な条件分岐をシンプルに表現できます。条件をまとめるときは、and(かつ)やor(または)を使います。

例えば、変数userNameがnullではなく、さらにuserAgeが18以上のときだけ表示する条件は次のように書けます。


大人のユーザー名:

この例では、andを使って「userNameがnullではない かつ userAgeが18以上」という条件をまとめています。逆に、どちらかがtrueなら表示する条件はorを使います。

複数条件をまとめて書くときは、条件式をシンプルにすることが重要です。条件が複雑になりすぎると、後から見たときにわかりにくくなります。必要に応じて条件式を分割するか、コントローラ側で事前に判定をして変数を用意しておくのも良い方法です。

次回の記事では、よく使われる複数条件のパターンや書き方のコツについてさらに詳しく解説していきます。

3. よく使われる複数条件のパターン

3. よく使われる複数条件のパターン
3. よく使われる複数条件のパターン

Thymeleafでif複数条件をまとめて書くとき、いくつか代表的なパターンがあります。初心者向けに理解しやすいように、具体例を挙げながら紹介します。

3‑1. and(かつ)を使った条件

例えば、ユーザー名userNameがnullでなく、かつ年齢userAgeが18歳以上の場合だけ「会員メッセージ」を表示するケースです。


ようこそ、さん!会員メッセージです。

3‑2. or(または)を使った条件

また、メールアドレスemailまたは電話番号phoneが設定されていれば連絡可能と表示する例です。


<p th:if="${email != null or phone != null}">
    連絡先が登録されています。
</p>

3‑3. 混合条件の例

複数のand/orを組み合わせる場合は、優先順位に注意しながら書きます。以下は「ユーザーがログイン済みで、かつ(管理者または有料会員)」という条件です。


<p th:if="${isLoggedIn and (isAdmin or isPremium)}">
    特別なダッシュボードにアクセスできます。
</p>

4. 複数条件を書くときの注意点とよくあるミス

4. 複数条件を書くときの注意点とよくあるミス
4. 複数条件を書くときの注意点とよくあるミス

複数条件をThymeleafで書くときには、以下のようなミスや注意点があります。初心者向けにわかりやすく説明します。

4‑1. 順序と()の使い忘れ

複数のand/orを組み合わせるときは、()で囲まないと意図しない条件評価になることがあります。


<!-- NG例 -->
<p th:if="${isLoggedIn and isAdmin or isPremium}">
    一部の人に表示されますが、意図と異なる結果に -->
</p>

<!-- OK例 -->
<p th:if="${isLoggedIn and (isAdmin or isPremium)}">
    より明確に条件をまとめています。
</p>

4‑2. null比較のミス

null判定は常に!= null== nullで行い、'null'のような文字列と比較しないように注意します。

4‑3. 条件式が長くなりすぎる

複雑な条件を書きすぎるとHTMLが読みにくくなります。コントローラであらかじめ判定したboolean変数を渡す仕組みにすると、テンプレートがすっきりします。

5. 実践例で理解を深めよう

5. 実践例で理解を深めよう
5. 実践例で理解を深めよう

実際のコードで複数条件の使い方を確かめてみましょう。以下は、Gradle+Pleiades環境のサンプルコントローラです。


@Controller
public class OrderController {

    @GetMapping("/order/status")
    public String showOrder(Model model) {
        Boolean isMember = true;
        Integer orderCount = 5;
        model.addAttribute("isMember", isMember);
        model.addAttribute("orderCount", orderCount);
        return "orderStatus";
    }
}

このコントローラから渡された変数を使い、HTML側でメッセージを切り替えます。


ご注文ありがとうございます!

注文がまだのようです。ぜひ商品をご覧ください。

このように、複数条件をまとめて書くことで、会員かつ注文ありの場合にだけ特定の表示を行えます。非常に実用的なパターンです。

初心者の方は、このような実践例を動かして、条件を変更したり変数をnullにしたりして挙動を確認すると、理解が深まります。

次回は後半で、コントローラ側の工夫や練習のコツを紹介します

次回は後半で、コントローラ側の工夫や練習のコツを紹介します
次回は後半で、コントローラ側の工夫や練習のコツを紹介します

ここまでで、Thymeleafでif複数条件を使う基本と、よくあるパターン、注意点、実践例まで解説しました。次回の記事では、コントローラ側でboolean変数を使った工夫や、初心者向けの練習方法、記事のまとめを紹介します。

6. コントローラで複数条件を扱うときのポイント

6. コントローラで複数条件を扱うときのポイント
6. コントローラで複数条件を扱うときのポイント

コントローラで複数条件を扱う場合は、なるべくHTMLテンプレート内で条件を組み立てなくても済むように工夫すると、コードが読みやすくなります。Pleiades + Gradle環境で@Controllerを使う際に意識したいポイントを紹介します。

6‑1. boolean変数をModelに追加する

HTML側で複数条件を記述するのではなく、コントローラ側であらかじめ判定した結果をModelに格納しておく方法です。


@Controller
public class AccessController {

    @GetMapping("/access")
    public String showAccess(Model model) {
        boolean isLoggedIn = true;
        boolean isAdmin = false;
        boolean canAccess = isLoggedIn && isAdmin;
        model.addAttribute("canAccess", canAccess);
        return "access";
    }
}

このようにcanAccessをModelにセットしておけば、HTMLでは以下のようにシンプルに使えます。


<p th:if="${canAccess}">
    管理者画面にアクセスできます。
</p>
<p th:unless="${canAccess}">
    管理者権限がありません。
</p>

6‑2. 複数条件のロジックはJava側でまとめる

複雑な条件式はJava側に集めて、テンプレートで使う変数は最低限に抑えると、HTMLがすっきりします。


@Controller
public class DiscountController {

    @GetMapping("/discount")
    public String showDiscount(Model model) {
        int purchaseCount = 3;
        boolean isPremium = true;
        boolean eligible = (purchaseCount > 2 && isPremium);
        model.addAttribute("eligible", eligible);
        return "discount";
    }
}

6‑3. 条件の変化に対応するテストを行おう

開発中は、purchaseCountisPremiumの値を切り替えてからブラウザで表示を確認しましょう。変更を反映しやすいようにテストしながら進めると、実際の動作がイメージできます。

7. 初心者が練習するときのポイントとコツ

7. 初心者が練習するときのポイントとコツ
7. 初心者が練習するときのポイントとコツ

Thymeleafの複数条件を練習するときに覚えておきたいポイントとコツを紹介します。

7‑1. 小さなサンプルで動きを確認

まず、Pleiadesで新しいGradleプロジェクトを作成し、@Controllerを使ってboolean変数をModelに渡すだけの簡単なサンプルを作り、Thymeleaf側ではth:ifのand/orを確認してみましょう。

7‑2. 条件のパターンを変えてみよう

次に、boolean条件をいくつか用意して、andorの組み合わせを試すことで、条件分岐の意味が体感的にわかります。初心者の皆さんにとって、手を動かしながら確認することが理解への近道です。

7‑3. コントローラとHTMLの関係を意識

コントローラで作った変数はModelを通してHTMLに渡るため、名前(キー)を分かりやすく付けることが大切です。可読性を意識してコードを書く習慣をつけましょう。

7‑4. デバッグはSystem.out.printlnでもOK

まだSpring Bootに慣れていない初心者なら、コントローラ内でSystem.out.println("値:" + variable)を使って、値の中身を確認してみましょう。簡単なことですが、大きな手助けになります。

8. 記事のまとめ

8. 記事のまとめ
8. 記事のまとめ

この記事では、Pleiades + Gradle + @Controllerの環境でThymeleafの複数条件のif文を初心者向けに解説しました。

  • HTML側でth:if="${A and B}"orを使って複数条件をまとめて表現できる
  • Java側でboolean変数にまとめてModelに渡すとHTMLがすっきり書ける
  • and/orの組み合わせや()の使い方の注意点を覚えることで条件分岐のミスを減らせる
  • 初心者は小さなサンプルで手を動かしながら理解を深めよう

Thymeleafは条件分岐だけでなく、繰り返し処理や変数操作など便利な機能がそろっています。今回学んだ複数条件の書き方をステップにして、さらに他の機能もマスターしていきましょう!

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

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

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

Thymeleafのth:ifとは何ですか?基本的な使い方を教えてください。

Thymeleafのth:ifは、HTMLテンプレート内で条件に応じて要素の表示・非表示を制御するための属性です。Spring BootのControllerから渡された変数を使って、trueのときだけ要素を表示できます。
コメント
コメント投稿は、ログインしてください

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

関連記事:

関連記事なし

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