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

Thymeleaf if文で属性追加・削除を行う方法|初心者向け入門ガイド

Thymeleaf if文で属性追加・削除を行う方法
Thymeleaf if文で属性追加・削除を行う方法

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

新人

「Thymeleafで要素にclass属性とかdisabled属性を動的に追加・削除したいです!」

先輩

「if文を使えば簡単だよ。Pleiades+Gradle環境のSpring Bootでどう書くか見ていこう」

新人

「具体的なHTMLコードが知りたいです!」

先輩

「では、@Controllerから渡すbooleanとThymeleafのif文でclassやdisabledを操作する方法を紹介するね」

1. Thymeleafで属性を操作する基本の考え方

1. Thymeleafで属性を操作する基本の考え方
1. Thymeleafで属性を操作する基本の考え方

まず、Thymeleafで class や disabled のような属性を変えるには th:attr や専用の th:classappendth:disabled を使います。これらは boolean 判定と組み合わせて動的に属性を追加・削除できます。Spring Boot の @Controller で boolean フラグを渡せば、Pleiades+Gradle 環境でも簡単に実行できます。

たとえば、button をクリック不可にしたいときに、disabled 属性を動的につけたり消したりできます。

2. th:ifで属性の追加・削除を行う基本

2. th:ifで属性の追加・削除を行う基本
2. th:ifで属性の追加・削除を行う基本

まずは button に disabled を追加・削除するシンプルな例です。


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 FormController {

    @GetMapping("/form")
    public String showForm(Model model) {
        boolean canSubmit = checkCanSubmit(); // 送信可能か判定
        model.addAttribute("canSubmit", canSubmit);
        return "form";
    }

    private boolean checkCanSubmit() {
        return false;
    }
}

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>フォーム</title></head>
<body>
  <h1>サンプルフォーム</h1>
  <button type="submit"
    th:disabled="${!canSubmit}">送信</button>
</body>
</html>

ここでは boolean フラグ canSubmit が false のときに button に disabled 属性が付きます。逆に true のときは disabled が付かず、クリック可能になります。

次は class を追加・削除する例です。th:classappend を使うと、既存の class に条件付きで新しい class を加えられます。


<button th:classappend="${isActive} ? 'active' : ''">リンク</button>

この例では、boolean フラグ isActive が true のときに class="active" が追加され、false のときは何も追加されません。

3. 実務での属性の追加・削除の活用例

3. 実務での属性の追加・削除の活用例
3. 実務での属性の追加・削除の活用例

実際の開発現場では、Thymeleafの属性追加・削除機能を使って、ユーザー操作に応じた表示切り替えやスタイル適用がよく行われます。たとえば「編集モード&レイアウト切替」や「エラーハンドリング」などです。

編集モードによる class 属性の切替


@GetMapping("/edit")
public String editForm(Model model) {
    boolean editMode = true; // 編集モードON/OFF
    model.addAttribute("editMode", editMode);
    return "edit";
}

<div th:classappend="${editMode} ? ' editable' : ''">
  <input type="text" th:disabled="${!editMode}" />
  <textarea th:disabled="${!editMode}"></textarea>
</div>

このように、th:classappendで divに "editable" クラスを追加して編集モードらしさを出し、th:disabledで入力項目の有効/無効を制御できます。

エラー発生時の視覚的な強調


@GetMapping("/submit")
public String submit(Model model) {
    boolean hasError = validateInput(); // 入力チェック
    model.addAttribute("hasError", hasError);
    return "form";
}

<input type="text"
  th:classappend="${hasError} ? ' text-danger' : ''" />
<span th:if="${hasError}" style="color:red;">入力エラーがあります</span>

この例では、入力チェックでエラーがあるときに inputに赤字クラスを追加し、エラーメッセージを表示しています。ユーザーにとってわかりやすい UI を手軽に構築できます。

4. よくある間違いや注意点

4. よくある間違いや注意点
4. よくある間違いや注意点
  • th:disabledだけでなく、disabledを初期属性に残してしまうと意図しない動きになる
  • th:classappendの条件式で空文字「''」を返すと、余計なスペースが発生しやすいので注意
  • boolean フラグが null の場合、Thymeleafで例外になることがあるので、@Controller側で必ず true/false を渡す
  • 複数の属性を同時に if 判定すると HTML が読みにくくなる場合があるため、th:blockやテンプレート分割を検討する

特に初心者は boolean 変数の null チェックを忘れやすく、th:disabled に null を渡してしまうミスがあります。@Controllerで必ず true/false を設定し、Gradle ビルド時にもチェックしましょう。

5. @Controllerでの属性の制御例

5. @Controllerでの属性の制御例
5. @Controllerでの属性の制御例

最後に、@Controller による属性切替の制御例をまとめます。以下は「ログイン済フラグ」「編集済フラグ」をもとに、属性追加・削除を行う例です。


@GetMapping("/profile")
public String profile(Model model) {
    boolean loggedIn = checkLogin();     // ログイン済みか
    boolean canEdit = checkAuthority();  // 編集権限があるか
    model.addAttribute("loggedIn", loggedIn);
    model.addAttribute("canEdit", canEdit);
    return "profile";
}

<div th:if="${loggedIn}">
  <h1>プロフィール編集</h1>
  <button th:disabled="${!canEdit}">保存</button>
  <span th:classappend="${canEdit} ? ' visible' : ' invisible'">編集できます</span>
</div>
<div th:if="${!loggedIn}">
  <p>ログインしてください。</p>
</div>

この例では、ログインの有無で編集画面自体の表示/非表示を切り替え、編集可能なユーザーには「保存」ボタンを有効化するとともに、メッセージの visibility を制御しています。

ログイン状態や権限フラグを Controller で管理し、Thymeleaf の属性追加・削除で UI を制御する流れは、実務でも非常によく使われるパターンです。

6. 実際の画面での活用例

6. 実際の画面での活用例
6. 実際の画面での活用例

実際にSpring Bootの@Controllerから渡したboolean値を使って、画面の見た目や使いやすさを向上させる例を見ていきましょう。例えば「商品購入ページ」で、在庫状況に応じて購入ボタンを無効化する例です。


@GetMapping("/shop")
public String shop(Model model) {
    boolean inStock = checkStock(); // 在庫判定
    model.addAttribute("inStock", inStock);
    return "shop";
}

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>商品ページ</title></head>
<body>
  <h1>商品詳細</h1>

  <div>
    <p th:text="${inStock} ? '在庫あり' : '在庫なし'"></p>
    <button th:disabled="${!inStock}">購入する</button>
  </div>
</body>
</html>

このように、在庫がない場合は「購入する」ボタンが自動的に無効化されるので、ユーザーにとって操作しやすい画面になります。Spring BootとThymeleafの組み合わせは、Pleiades+Gradle環境でスムーズに確認できます。

7. 初心者が学習を進めるためのコツ

7. 初心者が学習を進めるためのコツ
7. 初心者が学習を進めるためのコツ

属性追加・削除の仕組みは一見単純ですが、実際の開発現場では非常に重要です。ここでは初心者が学習を進めるためのポイントをいくつか紹介します。

まずはシンプルな例を真似る

最初は、公式ドキュメントやチュートリアルのサンプルを真似するところから始めましょう。基本的なth:ifth:classappendth:disabledの使い方を繰り返すことで、自然に身につきます。

booleanフラグの準備を丁寧に

Spring Bootの@Controllerで渡すbooleanフラグは、必ずtrueかfalseになるようにしておきましょう。nullが渡されると、Thymeleafで例外が起きることが多いです。初心者のうちは必ずnullチェックをして、Gradleビルド時にエラーがないかも確認すると良いです。

小さな画面で試しながら進める

学習を始めたばかりのころは、あまり複雑な画面で試さず、ボタン一つ、入力欄一つの画面で「属性が変わる瞬間」を体感するのがおすすめです。実際に目で見て動きがわかると、理解がぐっと深まります。

画面上で条件分岐の動きを確認する

画面上でbooleanの値を切り替えながら、属性の追加・削除がどのように変化するかを何度も試してみてください。特に、Spring BootアプリケーションをPleiades上で実行して、HTMLの動きを細かく見ておくと良いです。

8. まとめ

8. まとめ
8. まとめ

ここまで、Thymeleafのif文を使った属性追加・削除の方法を、初心者向けに丁寧に解説してきました。Pleiades+Gradle環境での開発では、@Controllerから渡すboolean値をうまく使うことで、HTMLのclassやdisabled属性を動的にコントロールできます。

属性追加・削除は、画面のユーザー体験に直結する大切な技術です。たとえば、ボタンを無効化することで誤操作を防止したり、エラーメッセージを出すことでわかりやすいUIを提供できます。

実務では、ユーザーの権限や状態に応じて属性を切り替える例が頻出します。Gradleでビルドし、Pleiades上で動作を確認しながら学習すると、Thymeleafのif文と属性制御の使い方がしっかり身につきます。

ぜひ今回紹介した内容をもとに、あなたのSpring Bootアプリケーションでも試してみてください。地道に手を動かすことで、理解がさらに深まり、より良い画面作りができるようになります。

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

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

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

Thymeleafでボタンを条件によって無効化するにはどうすればいいですか?

Thymeleafでは、th:disabled属性を使うことでボタンの無効化が可能です。Spring Bootの@Controllerから渡したboolean変数がfalseのときに、ボタンを無効化するように記述します。
コメント
コメント投稿は、ログインしてください

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

関連記事:

関連記事なし

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