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

Thymeleaf unlessとは?条件反転の書き方を学ぼう

Thymeleaf unlessとは?条件反転の書き方を学ぼう
Thymeleaf unlessとは?条件反転の書き方を学ぼう

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

新人

「先輩、Thymeleafのunlessって何ですか?ifとどう違うんですか?」

先輩

「unlessは“条件が成り立たない場合に表示する”という逆転のロジックになるんだ。ifの反対だよ。」

新人

「なるほど。具体的にはどう書くんですか?」

先輩

「基本の構文を見てみよう!」

1. Thymeleafのunlessとは?

1. Thymeleafのunlessとは?
1. Thymeleafのunlessとは?

Thymeleafのunlessは、HTMLテンプレートで「条件が成り立たないとき」に表示したい内容を書くときに使います。これはJavaScriptやJavaのif文の逆で、条件がfalseなら要素を表示する仕組みです。

たとえば、ユーザーがログインしていないときに「ログインしてください」というメッセージを出すときに使うケースが典型です。Pleiades+Gradle環境で作ったSpringプロジェクトで、@Controllerを使って実装していきます。

SEOキーワードとしては「Thymeleaf unless」「条件反転」「初心者向け」「テンプレートエンジン」などを意識すると良いでしょう。

2. unlessの基本構文の書き方

2. unlessの基本構文の書き方
2. unlessの基本構文の書き方

まずは単純な例から理解していきましょう。条件がfalseのときだけ表示する構文は以下のようになります。


<p th:unless="${isLogin}">ログインしてください</p>

この例では、コントローラから渡されたisLoginというboolean変数がfalseの場合に「ログインしてください」が表示されます。

コントローラのサンプルは次の通りです。


@Controller
public class LoginPromptController {
    @GetMapping("/prompt-login")
    public String showPrompt(Model model) {
        boolean isLogin = false; // ログアウト状態
        model.addAttribute("isLogin", isLogin);
        return "prompt-login";
    }
}

上記のようにModelisLogin変数を渡し、テンプレート側でth:unlessを使って条件反転表示を行います。

基本ポイント

  • th:unlessは条件がfalseのときだけ要素を描画します。
  • 条件式は${変数}や比較式も使えます(例:th:unless="${user == null}")。
  • コードをすっきり書きたいときに役立ちます。

3. th:unlessの使い方と例

3. th:unlessの使い方と例
3. th:unlessの使い方と例

th:unless は「条件が成り立たないときに要素を表示する」属性です。いわば th:if の逆になります。条件が false のときだけ要素が描画されるため、条件反転のロジックを書くのに便利です。SEOキーワード「Thymeleaf unless」「条件反転」などを意識して活用しましょう。

基本的な書き方は次の通りです。


<p th:unless="${isLogin}">ログインしてください</p>

この例では、isLoginfalse のときだけ「ログインしてください」が表示されます。

コントローラ側は以下のようになります:


@Controller
public class PromptController {
    @GetMapping("/check-login")
    public String checkLogin(Model model) {
        boolean isLogin = false;
        model.addAttribute("isLogin", isLogin);
        return "check-login";
    }
}

上記のように Model にフラグを渡し、テンプレートで条件反転表示を行います。

ポイント

  • th:unless は条件が false の場合のみ描画
  • 条件式には比較式(user == null など)も使える
  • 可読性を高めるため、変数名は boolean 型で分かりやすく

4. th:ifとの違いと使い分け

4. th:ifとの違いと使い分け
4. th:ifとの違いと使い分け

th:ifth:unless は、一見似ていますが、肯定・否定のロジックで用途が異なります。th:if は条件が true で描画、th:unlessfalse で描画します。使い分けによってコードの意図が読みやすくなります。

ログイン状態に応じてリンクを切り替える例で比較してみましょう。


<p th:if="${isLogin}">ようこそ!</p>
<p th:unless="${isLogin}">ゲストの方へようこそ!</p>

条件式が肯定的なら th:if、否定条件なら th:unless を使うと意図が明確になります。

比較ポイント

  • th:if:表示したい条件が明確なとき
  • th:unless:非表示条件を指定したいとき
  • 両方を併用することで else 相当のロジックを表現可能

5. unlessを使ったif else風の書き方

5. unlessを使ったif else風の書き方
5. unlessを使ったif else風の書き方

Thymeleafでは Java のように else を直接書けませんが、th:ifth:unless を組み合わせて、擬似的な if‑else 構造を作れます。よくある例として「ログイン/ログアウト」ボタンの切り替えがあります。


<div>
  <button th:if="${isLogin}">ログアウト</button>
  <button th:unless="${isLogin}">ログイン</button>
</div>

さらに複雑な例として、プレミアム会員かどうかで案内文を表示するコードを紹介します:


<div th:if="${isLogin}">
  <p>こんにちは、<span th:text="${username}">ユーザー</span>さん!</p>
  <p th:unless="${isPremium}">プレミアム会員登録をご検討ください。</p>
</div>
<div th:unless="${isLogin}">
  <p>ログインしてコンテンツをご覧ください。</p>
</div>

このように条件を重ねることで、ログイン・未ログイン・会員状態など複数の条件に対応できます。初心者にも扱いやすく、テンプレートの可読性も高まります。

6. unlessを使ったサンプルアプリケーション例

6. unlessを使ったサンプルアプリケーション例
6. unlessを使ったサンプルアプリケーション例

ここでは、実際にth:unlessを使ったサンプルアプリケーションを作ってみましょう。Pleiadesをインストールして、Pleiadesの中でGradleを使用してプロジェクトを作成します。依存関係は、Pleiadesのチェックボックスで必要なものを追加してください。

今回の例は、ログイン状態によって表示するメッセージを切り替えるシンプルなサンプルです。

コントローラのサンプルコード


@Controller
public class SampleController {
    @GetMapping("/sample-app")
    public String showSample(Model model) {
        boolean isLogin = false; // 仮に未ログイン
        String username = "ゲスト";
        boolean isPremium = false;
        model.addAttribute("isLogin", isLogin);
        model.addAttribute("username", username);
        model.addAttribute("isPremium", isPremium);
        return "sample-app";
    }
}

テンプレートでは、th:ifth:unlessを組み合わせて表示を切り替えます。

テンプレートの例


<div th:if="${isLogin}">
  <p>ようこそ、<span th:text="${username}">ユーザー</span>さん!</p>
  <p th:unless="${isPremium}">プレミアム会員になりませんか?</p>
</div>
<div th:unless="${isLogin}">
  <p>ログインするとコンテンツがもっと見られます。</p>
</div>

このように書くことで、ログイン状態や会員種別に応じて表示を分けることができます。特に初心者の方は、変数名を分かりやすくし、条件をシンプルにすると理解しやすいです。

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

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

初心者の方がth:unlessを練習するときに大切なのは、「条件が成り立たないときに何を表示するか」を意識することです。たとえば、isLoginfalseのときだけ表示する部分を明確にするだけで、テンプレートがすっきり見やすくなります。

練習のコツ

  • まずはth:unless単独で動かすサンプルを作る。
  • 慣れてきたらth:ifと組み合わせて、if else風に条件を切り替える。
  • 変数名はわかりやすく。isLoginisPremiumなど、true/falseがすぐに分かる名前にすると混乱しにくい。
  • 条件が複雑になる場合は、サーバーサイドで変数にまとめておくと、テンプレートが読みやすくなる。

また、開発環境はPleiadesを使い、テンプレートは必ずGradleプロジェクト内で管理すると、Spring Bootのプロジェクト構成が自然に身につきます。@Controllerを使って、ルーティングやモデル渡しの仕組みを学ぶのも大切です。

8. ポイント整理

8. ポイント整理
8. ポイント整理

今回の記事では、Thymeleafのth:unlessについて、基本的な意味や書き方から、th:ifとの違い、if else風の実装方法まで幅広く学びました。条件が成り立たないときだけ表示する仕組みは、Webアプリケーションを作る上で非常に役立ちます。

特に、Pleiades環境でGradleを使い、@Controllerでモデルを扱う方法を身につければ、条件分岐の基本はもちろん、実際のWebアプリ開発にもスムーズに活かせるようになります。初めて学ぶ方でも安心して練習を進めてみてください。

これからも、Thymeleafのif文・unless文を組み合わせて、動的で使いやすいWebページを作っていきましょう!

まとめ

まとめ
まとめ

th:unlessの役割と考え方を振り返る

今回の記事では、Thymeleafの th:unless について、基本的な意味から具体的な書き方、 th:if との違い、そして実務を意識した使い分けまでを段階的に解説してきました。 th:unless は「条件が成り立たない場合に表示する」という、いわば条件反転のための属性です。 if文の否定条件を書く代わりに使うことで、テンプレート全体の読みやすさを大きく向上させることができます。

特にSpring MVCとThymeleafを組み合わせたWebアプリ開発では、ログイン状態や会員区分、 入力値の有無といった「trueかfalseか」で判断する場面が数多く登場します。 そのようなときに th:unless を使えば、 「ログインしていない場合だけ表示する」「条件を満たしていない場合だけ案内を出す」 といった意図をコード上で自然に表現できます。 これは初心者だけでなく、チーム開発においても非常に重要なポイントです。

th:ifとの違いと可読性への影響

th:ifth:unless はどちらも条件付きで要素を表示するための属性ですが、 書き分けることでコードの意味が直感的になります。 たとえば「ログインしているときに表示する」のであれば th:if、 「ログインしていないときに表示する」のであれば th:unless を使うと、 テンプレートを読んだ瞬間に意図が伝わります。

否定条件を th:if="${!isLogin}" のように書くこともできますが、 条件が増えてくると否定が重なり、読みづらくなるケースもあります。 そうした場面で th:unless を使うと、条件反転をシンプルに表現でき、 初心者でも理解しやすいテンプレートになります。 可読性を意識した書き方は、後から自分がコードを見返したときにも役立ちます。

まとめとしてのシンプルなサンプル


<div>
    <p th:if="${isLogin}">ログイン中です</p>
    <p th:unless="${isLogin}">ログインしてください</p>
</div>

この例のように、同じ条件を th:ifth:unless で書き分けることで、 if else に近い構造を分かりやすく表現できます。 ログイン状態やフラグによる画面切り替えはWebアプリ開発の基本なので、 この書き方をしっかり身につけておくと、今後の学習がスムーズになります。

先生と生徒の振り返り会話

生徒:「th:unlessって、最初は少し分かりにくかったですが、ifの反対だと考えると理解しやすくなりました。」

先生:「その通りだね。条件が成り立たない場合に表示する、と意識すると使いどころが見えてくるよ。」

生徒:「否定条件を書くよりも、unlessを使った方がテンプレートが読みやすく感じました。」

先生:「可読性はとても大事だよ。特にThymeleafは画面を見る人が多いからね。」

生徒:「ifとunlessを組み合わせると、if elseみたいに書けるのも便利ですね。」

先生:「ログイン画面や権限ごとの表示切り替えでは、ほぼ必ず使う考え方だよ。」

生徒:「これで条件分岐の画面表示が怖くなくなりました。次は複数条件にも挑戦したいです。」

先生:「いいね。その調子で少しずつ条件を増やして練習していこう。」

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

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

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

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

Thymeleafのth:unlessは「条件が成り立たないときに表示する」ための属性です。JavaやJavaScriptのif文とは逆の動きをし、条件が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の繰り返し処理の使い方