カテゴリ: Thymeleaf 更新日: 2025/07/04

Thymeleaf JavaScriptで条件分岐するサンプルコード|初心者向け完全ガイド

Thymeleaf JavaScriptで条件分岐するサンプルコード
Thymeleaf JavaScriptで条件分岐するサンプルコード

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

新人

「ThymeleafでJavaScriptに値を渡して、条件分岐ってできるんですか?」

先輩

「もちろんできるよ。サーバーから変数を渡して、JavaScriptで条件に応じて表示や処理を変えたりできるんだ。」

新人

「初心者でもわかる方法で教えてもらえますか?」

先輩

「まずは基本の仕組みから順に見ていこう!」

1. ThymeleafとJavaScriptの連携の基本

1. ThymeleafとJavaScriptの連携の基本
1. ThymeleafとJavaScriptの連携の基本

Thymeleaf(タイムリーフ)は、JavaのWebフレームワークSpringと相性がいいテンプレートエンジンで、HTMLにサーバー側の変数を埋め込むことができます。JavaScriptと連携すると、サーバーから渡した値をフロントエンドでそのまま使って、動的に表示や処理を変化させられます。

開発環境はpleiades+Gradle、@Controllerを使ったSpringプロジェクトを前提にしています。Bootstrapなど余計なライブラリは使わず、純粋にThymeleafとJavaScriptだけで実装します。

2. JavaScriptで条件分岐を行う基本的な仕組み

2. JavaScriptで条件分岐を行う基本的な仕組み
2. JavaScriptで条件分岐を行う基本的な仕組み

JavaScriptの条件分岐は、if文や三項演算子を使います。たとえば、数値や文字列に応じて処理を切り替えるときに便利です。


<!DOCTYPE html>
<html>
<head><title>条件分岐サンプル</title></head>
<body>
  <script>
    let score = 75;
    if (score >= 80) {
      console.log("合格です!");
    } else if (score >= 60) {
      console.log("ぎりぎり合格");
    } else {
      console.log("残念、不合格です");
    }
  </script>
</body>
</html>

この例では、scoreに応じてコンソールに出力を変えています。Thymeleafと組み合わせれば、サーバーから渡されたscoreで画面表示も制御できます。

3. ThymeleafからJavaScriptへ値を渡して条件分岐するサンプル

3. ThymeleafからJavaScriptへ値を渡して条件分岐するサンプル
3. ThymeleafからJavaScriptへ値を渡して条件分岐するサンプル

まずはコントローラでサーバー側の数値や文字列を用意し、ThymeleafでJavaScriptに渡して条件分岐する仕組みを作ります。Gradleとpleiades環境で作った@ Controllerクラスがベースです。


@Controller
public class ConditionController {
    @GetMapping("/check")
    public String check(Model model) {
        model.addAttribute("score", 85);
        model.addAttribute("status", "active");
        return "check";
    }
}

次にcheck.htmlでth:inline="javascript"を使い、JavaScript変数として値を受け取ります。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>条件チェック</title></head>
<body>
  <script th:inline="javascript">
    let score = [[${score}]];
    let status = '[[${status}]]';
    if (score >= 80 && status === 'active') {
      console.log("高得点でアクティブです");
    } else {
      console.log("条件に合いません");
    }
  </script>
</body>
</html>

scoreが80以上かつstatusが“active”なら「高得点でアクティブです」とコンソールに表示されます。これでサーバーから渡された値で条件制御ができます。

4. よく使う条件分岐の具体例と使い方

4. よく使う条件分岐の具体例と使い方
4. よく使う条件分岐の具体例と使い方

ここでは、実務でよく登場する条件分岐の具体例を紹介します。入力チェックやメッセージ切り替えなど、初心者でも使いやすいパターンです。

ユーザー権限による表示切り替え

管理者(admin)か一般ユーザー(user)かによってボタンの表示を切り替える例です。


@Controller
public class RoleController {
    @GetMapping("/role")
    public String role(Model model) {
        model.addAttribute("role", "admin");
        return "role";
    }
}

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>権限チェック</title></head>
<body>
  <script th:inline="javascript">
    let role = '[[${role}]]';
    if (role === 'admin') {
      document.write("<button>管理者メニュー</button>");
    } else {
      document.write("<p>一般ユーザーメニュー</p>");
    }
  </script>
</body>
</html>

入力値の必須チェック

フォーム送信時にJavaScript側で入力が空白かどうかをチェックする例です。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>必須チェック</title></head>
<body>
  <input id="name" placeholder="名前を入力"/>
  <button id="btn">送信</button>
  <script>
    document.getElementById("btn").addEventListener("click", function(){
      let name = document.getElementById("name").value;
      if (!name) {
        alert("名前は必須です");
      } else {
        console.log("入力OK:", name);
      }
    });
  </script>
</body>
</html>

フラグの切り替え例

サーバーからBoolean値を渡し、ON/OFFを切り替えるシンプルな例です。


@Controller
public class FeatureController {
    @GetMapping("/feature")
    public String feature(Model model) {
        model.addAttribute("enabled", true);
        return "feature";
    }
}

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>機能フラグ切替</title></head>
<body>
  <script th:inline="javascript">
    let enabled = [[${enabled}]];
    document.write(enabled ? "<p>機能はONです</p>" : "<p>機能はOFFです</p>");
  </script>
</body>
</html>

Boolean型の変数を受け取り、三項演算子で表示を変えています。

5. 条件分岐を活用する際の注意点

5. 条件分岐を活用する際の注意点
5. 条件分岐を活用する際の注意点

条件分岐を使うときは、サーバー側とJavaScript側で変数の型や値の一致に注意が必要です。たとえば文字列と数値を比較すると予期しない結果になることがあります。また、ユーザー入力やサーバーから渡された値が空やnullのときに想定外の動作にならないようにチェックを入れましょう。

さらに、th:inline="javascript"で変数を埋め込むとき、値にシングルクォートや特殊文字が含まれるとJavaScriptがエラーになります。必要ならth:utextやエスケープ処理を使うなどの対策が必要です。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>注意点サンプル</title></head>
<body>
  <script th:inline="javascript">
    let input = '[[${userInput}]]';
    if (typeof input !== 'string' || !input.trim()) {
      console.log("入力が無効です");
    } else {
      console.log("入力OK:", input);
    }
  </script>
</body>
</html>

この例ではtrim()を使って、空白のみの場合にも「入力が無効です」と判断しています。こうした前処理が品質向上に役立ちます。

6. 実際のプロジェクトでの活用例

6. 実際のプロジェクトでの活用例
6. 実際のプロジェクトでの活用例

実際の開発では、たとえば「注文数が閾値を超えたら注意メッセージを出す」「ログインユーザーがゲストなら購入ボタンを非表示にする」などの場面で条件分岐が活躍します。ここでは注文数チェックの例をご紹介します。


@Controller
public class OrderController {
    @GetMapping("/order")
    public String order(Model model) {
        model.addAttribute("orderCount", 12);
        return "order";
    }
}

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>注文数チェック</title></head>
<body>
  <div id="alert"></div>
  <script th:inline="javascript">
    let orderCount = [[${orderCount}]];
    let alertEl = document.getElementById("alert");
    if (orderCount > 10) {
      alertEl.textContent = "注文数が多いので在庫確認してください";
    } else {
      alertEl.textContent = "注文受付しました";
    }
  </script>
</body>
</html>

このように、orderCountの値に応じて画面に表示するメッセージを切り替えることで、ユーザーに分かりやすいフィードバックができます。

7. 初心者向けのステップアップ方法

7. 初心者向けのステップアップ方法
7. 初心者向けのステップアップ方法

これから条件分岐をもっと自在に扱えるようになるために、次のステップをおすすめします:

  1. まずはPleiades+Gradleで簡単なSpringプロジェクトを作成し、@ControllerからThymeleafへモデル変数を渡す流れを理解する。
  2. そのあとth:inline="javascript"でJavaScript変数に値を埋め込み、if文や三項演算子で処理を切り替える基本パターンを練習する。
  3. フォーム入力チェックやボタンの表示切り替えなど、日常的によく使うUIパターンをJavaScriptで実装する。
  4. 最後に在庫チェックやタブ切り替え、アクセス制御など、実際のシナリオに応じた条件分岐を組み込んだページを作成し、学習した知識を実践する。

これらを繰り返すことで、Spring+Thymeleaf+JavaScriptの組み合わせによる条件分岐に慣れ、自信をもって実装できるようになります。ドキュメントや実例を見ながら、少しずつアップデートしていきましょう。

コメント
コメント投稿は、ログインしてください

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

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