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

Thymeleafのif文とunlessの違いを初心者向けに解説!使い分けの基本をマスターしよう

Thymeleaf if文とunlessの違いを初心者向けに解説
Thymeleaf if文とunlessの違いを初心者向けに解説

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

新人

「先輩、Thymeleafのif文とunlessの違いって何ですか?初心者には難しそうに感じるんですが…」

先輩

「確かに最初は少し混乱しやすいけど、実はとてもシンプルなんです。順番に説明していきますね。」

新人

「なるほど。具体的な書き方も教えてほしいです!」

先輩

「もちろんです。コード例も交えて丁寧に解説するので安心してください。」

1. Thymeleafのif文の基本(th:ifの役割と使い方)

1. Thymeleafのif文の基本(th:ifの役割と使い方)
1. Thymeleafのif文の基本(th:ifの役割と使い方)

Thymeleafでは、条件に応じてHTMLの要素を表示・非表示にするためにth:ifを使います。基本的な役割は「条件がtrueのときに要素を表示する」というものです。初心者の方でも理解しやすいように、具体的な例を見てみましょう。

例えば、コントローラでModelmessageという変数を渡した場合、HTMLでは次のように条件を判定して表示します。


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

この例では、messageがnullではないときだけ

タグの中身が表示されます。逆にmessageがnullの場合は、この

タグ自体がHTMLに含まれません。これは、条件式がtrueのときだけ要素が出力されるThymeleafの基本的な仕組みです。

コントローラは必ず@Controllerを使って作成し、PleiadesのGradle環境で開発するのが前提です。


@Controller
public class SampleController {

    @GetMapping("/sample")
    public String showSample(Model model) {
        String message = "こんにちは、Thymeleaf!";
        model.addAttribute("message", message);
        return "sample";
    }
}

このサンプルでは、コントローラからmessageを渡して、HTML側でif文を使って表示する流れです。初心者の方でも、まずはこの基本構造をしっかり覚えておくと安心です。

2. unless文とは?基本的な意味と使い方

2. unless文とは?基本的な意味と使い方
2. unless文とは?基本的な意味と使い方

次にunless文について見ていきましょう。Thymeleafのth:unlessは、th:ifとは逆の条件で要素を表示するときに使います。つまり「条件がfalseのときだけ表示する」という役割です。

初心者向けにシンプルな例を紹介します。先ほどと同じmessage変数を使い、nullのときだけメッセージを表示したい場合は次のように書きます。


<p th:unless="${message != null}">メッセージは設定されていません。</p>

この例では、messageがnullのときに「メッセージは設定されていません。」という文が表示されます。逆にmessageがnullでない場合、この

タグはHTMLに含まれません。

コントローラ側は同じ構造でOKです。HTMLの条件分岐だけをth:ifth:unlessで切り替えて使う形になります。

初心者の方は、「th:ifは条件がtrueのときに表示」「th:unlessは条件がfalseのときに表示」というポイントを押さえておくと、使い分けがぐっと楽になります。

3. if文とunless文の具体的な違い(どんなときに使い分ける?)

3. if文とunless文の具体的な違い(どんなときに使い分ける?)
3. if文とunless文の具体的な違い(どんなときに使い分ける?)

if文とunless文は、一見似ていますが「条件の正負」で使い分けるとわかりやすくなります。初心者向けに言えば:

  • th:ifは「条件がtrueなら表示」
  • th:unlessは「条件がfalseなら表示」

たとえば、ユーザーがログインしているかどうかで表示内容を変えたい場合、if文とunless文で書き分けると次のようになります。


<p th:if="${isLoggedIn}">ログインユーザーへようこそ!</p>
<p th:unless="${isLoggedIn}">ログインしてください</p>

このように、ログイン状態に応じて表示内容を簡潔に切り替えられます。

4. よくある使い分け例とサンプルコード

4. よくある使い分け例とサンプルコード
4. よくある使い分け例とサンプルコード

以下は、初心者でもわかりやすい実践例です。開発環境はPleiades+Gradleで、@Controllerを使ったサンプルコントローラをまず確認します。


@Controller
public class LoginController {

    @GetMapping("/login")
    public String showLogin(Model model) {
        boolean isLoggedIn = false;
        model.addAttribute("isLoggedIn", isLoggedIn);
        return "login";
    }
}

そして、HTMLではif文とunless文を使って表示を切り替えます。


<p th:if="${isLoggedIn}">ようこそ、ログイン済みユーザーさん!</p>
<p th:unless="${isLoggedIn}">まだログインしていません。ログインしてください。</p>

この例では、isLoggedIntruefalse かを判断して適切なメッセージを表示します。初心者でもイメージしやすい基本パターンです。

5. よくあるミスと注意点

5. よくあるミスと注意点
5. よくあるミスと注意点

初心者がth:ifとth:unlessを使うときに陥りやすいミスと、その対策を紹介します。

5‑1. 条件式の誤解

th:unless="${isLoggedIn}"と書くと「isLoggedInがfalseのとき」に表示されるので、「ログインしていないとき」という意味になります。逆のときに何か表示したいときに混乱しないよう、意味を意識して使いましょう。

5‑2. 重複表示

ifとunlessの条件が重なっていると、両方とも表示されることがあります。たとえば両方に同じ条件を書いてしまうと予期せぬ表示になるので注意。

5‑3. 条件の複雑化

条件が複雑になると、どちらで判断すればよいかわかりにくくなることがあります。そんなときは、コントローラ側でbooleanフラグを用意してisLoggedInなどの意味を明確にしておくと、テンプレートが読みやすくなります。

6. コントローラ側の工夫ポイント(ifとunlessの切り替えを楽にする方法)

6. コントローラ側の工夫ポイント(ifとunlessの切り替えを楽にする方法)
6. コントローラ側の工夫ポイント(ifとunlessの切り替えを楽にする方法)

ifとunlessの切り替えをシンプルにするには、HTMLではなくコントローラで判定用のboolean変数を用意する方法が効果的です。初心者でも扱いやすく、テンプレートが読みやすくなる工夫を紹介します。

6‑1. 意味のあるboolean変数を作る

HTMLテンプレートでの条件分岐を減らすために、コントローラで「isLoggedIn」や「showBanner」など、意味が明確なboolean変数をModelに渡しましょう。たとえば、以下のようなサンプルです。


@Controller
public class BannerController {

    @GetMapping("/home")
    public String showHome(Model model) {
        boolean isFirstVisit = true; // 初回訪問かどうかを判定
        boolean showBanner = !isFirstVisit;
        model.addAttribute("showBanner", showBanner);
        return "home";
    }
}

HTMLでは次のようにシンプルになります。


<p th:if="${showBanner}">バナーを表示中です。</p>
<p th:unless="${showBanner}">ようこそ初めての訪問ですね!</p>

6‑2. 複雑なロジックはJavaでまとめる

複雑な条件判定(ログイン+権限チェックなど)はJava側でまとめ、Modelには結果だけを渡すようにすると、HTMLにはifunlessの単純な条件だけが残ります。可読性の高いテンプレートになります。

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

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

初心者がThymeleafのif文とunless文を使いこなすための練習方法とコツを紹介します。手を動かしながら学ぶことで理解が定着します。

7‑1. シンプルなプロジェクトから始める

Pleiades+Gradle環境で新規プロジェクトを作成し、@Controllerでboolean変数を渡すだけの簡単な画面を作ってみましょう。まずはifまたはunlessだけで表示を切り替えるだけのシンプルなテンプレートから始めるのがおすすめです。

7‑2. 条件を変えて挙動を確認

コントローラのboolean値をいろいろ変えて、「true」「false」の両方のケースで表示がうまく切り替わるか確認してみましょう。実際にブラウザで確認すると理解が深まります。

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

Modelに設定した変数名とHTML内のth:ifth:unlessで使っている変数名が一致しているかを意識しましょう。スペルミスや大文字小文字の間違いがエラーの原因になるので丁寧に確認しましょう。

7‑4. デバッグ出力で確認しよう

まだSpring Bootに慣れていない場合は、コントローラにSystem.out.println()を入れてboolean変数がどうなっているかをログで確認しながら進めると安心です。

8. 記事のまとめ

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

この記事では、Thymeleafのth:ifth:unlessの違いや使い分け、初心者向けの練習方法やコントローラでの工夫を具体例を交えて解説しました。ポイントを以下に整理します。

  • th:ifは条件がtrueのときに表示、th:unlessは条件がfalseのときに表示する
  • HTMLで複雑な条件を書くより、コントローラでboolean変数を用意するとテンプレートがすっきりする
  • 練習はPleiades+Gradle環境で小さな画面から始め、手を動かしながら条件の切り替えを確認することが理解を深める
  • モデル変数の管理やログ出力を併用することで、エラーに強くなる

Thymeleafの条件分岐をマスターすれば、さらに繰り返し処理や変数操作などにも取り組みやすくなります。今回の記事をきっかけに、次のステップへ進んでみてください!

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

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

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

Thymeleafのif文(th:if)とは何ですか?

Thymeleafのth:ifは、指定した条件がtrue(真)のときにHTMLの要素を表示する機能です。条件がfalse(偽)の場合、その要素は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の繰り返し処理の使い方