Thymeleaf if文でboolean判定を行う基本
新人
「Thymeleafでbooleanを使った条件分岐ってどうやるんですか?」
先輩
「Spring Bootの@Controllerから渡したboolean値を、th:ifで書くだけでOKです。」
新人
「具体的にコードを見たいです!」
先輩
「Pleiades+Gradle環境で実際に使えるコードを紹介しますね。」
1. Thymeleafでのboolean判定の基本的な使い方
まずは、Spring Bootの@Controllerでboolean型の値をModelに渡す方法から始めます。例えば、ログインしているかどうかを画面で判定したいケースを考えてみましょう。
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class AuthController {
@GetMapping("/status")
public String authStatus(Model model) {
boolean loggedIn = checkLogin(); // ダミーメソッド
model.addAttribute("loggedIn", loggedIn);
return "status";
}
private boolean checkLogin() {
// 本来はセッションや認証処理
return true;
}
}
このように、loggedInをModelに追加しておくと、Thymeleafのテンプレートでth:if="${loggedIn}"と書くだけで条件分岐できます。GradleでPleiades上で実行すると、この値が反映されます。
2. th:ifを使ったboolean判定の書き方
では、HTML側でboolean判定を使って表示を切り替えてみましょう。以下は、ログインしているかどうかでメッセージを出し分ける例です。
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>ログイン状態</title>
</head>
<body>
<h1>ログイン状態の表示</h1>
<div th:if="${loggedIn}">
<p>ようこそ、ログイン中です!</p>
</div>
<div th:if="${!loggedIn}">
<p>ログインしていません。ログインしてください。</p>
</div>
</body>
</html>
このように、Thymeleafのth:ifにboolean値や!loggedInを使うことで、簡単に条件分岐ができます。Spring Boot+Pleiades+Gradle環境では、Modelに追加されたboolean値がそのまま使えます。
boolean判定は、リストの有無やログイン状態、権限チェックなど実務でもよく使われるため、この基本を押さえることは重要です。
3. boolean判定を活かした実務での活用例
実際のSpring Boot+Thymeleafを使った開発現場では、boolean判定を使った条件分岐はとてもよく使われます。たとえば認証判定や権限チェック、フラグによる表示切り替えなどです。
ここでは「管理者だけに特定のボタンを表示する例」を見てみましょう。@Controllerから「isAdmin」というboolean値を渡すことで、テンプレート内で「管理者かどうか」を判定できます。
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class AdminController {
@GetMapping("/dashboard")
public String showDashboard(Model model) {
boolean isAdmin = currentUserIsAdmin(); // 実際は認証情報等で判定
model.addAttribute("isAdmin", isAdmin);
return "dashboard";
}
private boolean currentUserIsAdmin() {
// 疑似判定: true が管理者
return true;
}
}
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>ダッシュボード</title></head>
<body>
<h1>管理者ダッシュボード</h1>
<div th:if="${isAdmin}">
<button type="button">システム設定へ</button>
</div>
<div th:if="${!isAdmin}">
<p>この操作を行う権限がありません。</p>
</div>
</body>
</html>
このようにboolean判定を使うことで、ユーザーの状態に応じた表示切り替えが簡単にできます。GradleでビルドしながらPleiades上で確認すると、動きが実感しやすいです。
4. 注意点とよくある間違い
初心者がboolean判定を使うときによくあるミスには、以下のようなパターンがあります。
nullを渡してしまい、th:ifで例外が起きる- 複雑な式を直書きしてHTMLの可読性が低くなる
- boolean値の命名ルールが曖昧で混乱する
まずboolean値は、nullにならないように、@Controller側で初期値を設定してModelに渡してください。またドメイン値やリストサイズ判定などは、複雑な論理を
さらに変数名はisActiveやhasPermissionのように、意味がすぐわかる名前にしておくと、コードレビューでも可読性が高く安心です。
5. @Controllerでのbooleanデータの渡し方
最後に、@Controllerからbooleanデータを渡すときに気をつけたいポイントをまとめます。
- Model.addAttributeに必ずboolean値(null防止)を渡す
- Pleiades+Gradle環境でコンパイルエラーがないか確認する
- 必要に応じてboolean以外の補助フラグも渡す
下記は、販売状況によってボタンを出し分ける例です。boolean値は「canPurchase」という名前にして、何を意味するか一目でわかるようにしましょう。
@GetMapping("/product")
public String showProduct(Model model) {
boolean inStock = checkStock();
model.addAttribute("canPurchase", inStock);
return "product";
}
<div th:if="${canPurchase}">
<button>購入する</button>
</div>
<div th:if="${!canPurchase}">
<p>在庫切れです。</p>
</div>
このように変数名を工夫しておくと、Thymeleafのテンプレートも自然な読み方になります。Pleiadesでコード補完しながら、Gradleでビルドと実行まで確認するとさらに理解が深まります。
6. 実際の画面に反映させる例
ここでは、Spring Bootの@Controllerでboolean判定した値を使って、実際にユーザー画面に反映させる例を紹介します。Pleiades+Gradle環境で開発している前提なので、すぐに動かせるコードになっています。
以下は、「セール中かどうか」に応じてメッセージや価格表示を切り替える画面のサンプルです。
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class SaleController {
@GetMapping("/sale")
public String showSale(Model model) {
boolean onSale = isSalePeriod(); // セール期間ならtrue
double price = 1000.0;
model.addAttribute("onSale", onSale);
model.addAttribute("price", price);
return "sale";
}
private boolean isSalePeriod() {
// ダミー判定:trueならセール
return true;
}
}
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>セール情報</title></head>
<body>
<h1>商品セール情報</h1>
<div th:if="${onSale}">
<p style="color:red;">現在セール中!特別価格:¥<span th:text="${price * 0.8}">価格</span></p>
</div>
<div th:if="${!onSale}">
<p>通常価格:¥<span th:text="${price}">価格</span></p>
</div>
</body>
</html>
このように boolean 判定を使うことで、価格表示を動的に切り替えできます。Pleiades 上で Gradle ビルドして、そのまま画面で挙動を確認できるので、初心者でも実務的なイメージがつかみやすいです。
7. 初心者が学習を進めるコツ
ここからは、Thymeleaf と boolean 判定を効果的に学び進めるためのコツを紹介します。Pleiades+Gradle 環境を使った開発者に役立つ内容です。
小さい単位で動かして理解する
まずは一つの boolean 値だけを判定する画面を作ってみましょう。大きな画面にいきなり複数の条件を書くと混乱しやすいので、小さく始めることが上達のコツです。
Gradle ビルドで確認しながら進める
Pleiades 上で ./gradlew build を実行し、エラーや警告がないか確認しながら学習すると、コードの信頼性が高まり理解が深まります。
ログや System.out を活用する
boolean が意図しない値になっているときは、@Controller に System.out.println(onSale) を入れて確認すると原因がわかりやすくなります。ログ出力に慣れておくと、実務でのデバッグが楽になります。
テンプレートにコメントを加える
HTML の中に<!-- セール中なら価格を割引表示 --> のようなコメントを入れておくと、後からコードを見返すときに分かりやすく、可読性が上がります。
他の条件分岐パターンにも挑戦する
boolean 以外にもリストサイズ判定や null チェックなどの条件分岐を書いてみましょう。Thymeleaf の条件分岐を幅広く活用することで、テンプレートエンジンの理解が深まります。
8. まとめ
今回の記事では、Pleiades+Gradle 環境の Spring Boot アプリケーションにおいて、@Controller から Thymeleaf テンプレートへ boolean 型の値を渡し、th:if を使って条件分岐する基本を初心者向けにやさしく解説しました。
- Model に boolean 値を渡すことで、Thymeleaf 側で簡単に条件分岐できる
th:if="${flag}"やth:if="${!flag}"で true/false に応じた表示が可能- 実務では管理画面の権限判定やセールフラグなどに活用できる
- boolean 判定時には null チェックや変数名の命名規則に注意すると、可読性と安定性が高まる
- 小さい画面から始めて Gradle ビルドを活用し、ログ出力やテンプレートコメントを使って学習を進めよう
これらのコツを活かして、Thymeleaf の boolean 判定と if 文の使い方をしっかり身につけてください。初心者でも安心して使える Web アプリケーション開発の第一歩になります。ぜひ、Pleiades+Gradle+Spring Boot+Thymeleaf の組み合わせで、動く画面を作りながら進めていきましょう!