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

Thymeleaf JavaScriptと動的データの連携方法|初心者向けガイド

Thymeleaf JavaScriptと動的データの連携方法
Thymeleaf JavaScriptと動的データの連携方法

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

新人

「ThymeleafとJavaScriptで動的にデータをやり取りする方法ってありますか?」

先輩

「あるよ。サーバー側のモデルから値を渡して、JavaScriptで画面を動的に変更できるんだ。」

新人

「具体的にはどうすればいいですか?」

先輩

「まずはThymeleafの基本と、JavaScriptとの連携イメージから見てみよう!」

1. Thymeleafとは?

1. Thymeleafとは?
1. Thymeleafとは?

Thymeleaf(タイムリーフ)はSpringと相性が良いテンプレートエンジンで、HTMLにサーバー側の動的な値を埋め込むことができます。Pleiades+Gradle環境で、@Controllerアノテーションを使ったJavaクラスから値を渡して、画面に反映する用途に適しています。

例えば、ユーザー名やリスト表示などをHTMLに動的に挿入するのに便利です。Bootstrapなどのライブラリは使わず、純粋にThymeleafとJavaScriptで実装します。

2. JavaScriptとThymeleafの基本的な連携イメージ

2. JavaScriptとThymeleafの基本的な連携イメージ
2. JavaScriptとThymeleafの基本的な連携イメージ

Thymeleafでは、th:inline="javascript"を指定した scriptタグの中で、サーバーから渡された値をJavaScript変数として取得できます。これにより、動的データをJavaScriptで扱えるようになり、条件分岐や画面制御などが可能になります。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>連携サンプル</title></head>
<body>
  <script th:inline="javascript">
    /* サーバーから渡された動的データを受け取る */
    let username = '[[${username}]]';
    let count = [[${count}]];
    console.log(username, count);
  </script>
</body>
</html>

こうすることで、JavaScript内でサーバーのデータを活用でき、リアクティブなUI作りに役立ちます。

3. サーバー側から渡した動的データをJavaScriptに取り込む方法

3. サーバー側から渡した動的データをJavaScriptに取り込む方法
3. サーバー側から渡した動的データをJavaScriptに取り込む方法

Pleiades+Gradle環境で作成したSpringプロジェクトでは、@ControllerクラスからThymeleafにモデル属性を渡せます。その値をJavaScriptで利用すると、フロントエンドが動的に反応する画面が実現できます。


@Controller
public class DataController {
    @GetMapping("/dynamic")
    public String dynamicData(Model model) {
        model.addAttribute("username", "田中太郎");
        model.addAttribute("notifications", List.of("メッセージ1", "アラート2", "更新3"));
        return "dynamic";
    }
}

このように渡されたusernamenotificationsを、ThymeleafテンプレートでJavaScript変数として受け取ります。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>動的データ取得サンプル</title></head>
<body>
  <script th:inline="javascript">
    let username = '[[${username}]]';
    let notifications = /*[[${notifications}]]*/[];
    console.log(username);
    console.log(notifications);
  </script>
</body>
</html>

これにより、サーバーから渡された文字列や配列をJavaScriptが受け取り、画面に反映できるようになります。

4. 動的データをJavaScriptで活用する具体的なサンプルコード

4. 動的データをJavaScriptで活用する具体的なサンプルコード
4. 動的データをJavaScriptで活用する具体的なサンプルコード

以下は、サーバーから渡された
ユーザー名や通知リストを使って、画面にメッセージを表示する例です。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>通知表示サンプル</title></head>
<body>
  <h1 id="welcome"></h1>
  <ul id="alerts"></ul>
  <script th:inline="javascript">
    let username = '[[${username}]]';
    let notifications = /*[[${notifications}]]*/[];
    document.getElementById("welcome").textContent = username + "さん、ようこそ!";
    const ul = document.getElementById("alerts");
    notifications.forEach(n => {
      const li = document.createElement("li");
      li.textContent = n;
      ul.appendChild(li);
    });
  </script>
</body>
</html>

このサンプルでは、ユーザー名と通知配列をJavaScriptで受け取り、forEachでリスト表示しています。初心者でも理解しやすい動的UIの例です。

5. よく使うThymeleafの属性の基本的な使い方

5. よく使うThymeleafの属性の基本的な使い方
5. よく使うThymeleafの属性の基本的な使い方

効率よく動的データを扱うには、Thymeleafの属性を活用することが重要です。

th:inline="javascript"

JavaScript内でサーバーからの値を安全に埋め込むために使います。文字列や配列、数値などをJavaScript変数に割り当てられます。

th:text

HTML要素のテキストをサーバー側の値で置き換える際に使用します。DOM操作で値を設定する代わりに、あらかじめHTML内に表示させたい場合に有効です。


<p th:text="${username} + 'さん、こんにちは!'"></p>

th:utext

HTMLを含むテキストをそのまま表示させたい場合に使います。ここでは使っていませんが、動的にリッチな内容を挿入したいときに役立ちます。

th:attr

属性値を動的に設定するときに便利です。data属性にサーバー値を入れて、JavaScriptで利用するパターンなどに使えます。


<div th:attr="data-user=${username}"></div>
<script>
  let user = document.querySelector('div').dataset.user;
  console.log(user);
</script>

6. 動的データ連携のメリットと注意点

6. 動的データ連携のメリットと注意点
6. 動的データ連携のメリットと注意点

サーバーから渡された動的データをJavaScriptで扱えると、ユーザー体験が向上します。例えば、ページ遷移せずにアラートリストを更新したり、フォーム入力に応じて即座に画面表示を切り替えたりできます。これにより、SPA的な使い勝手をPleiades+Gradle環境で提供可能です。

ただし注意点もあります。大量データをJavaScriptに渡すとパフォーマンスが低下する恐れがあります。また、th:inline="javascript"で文字列を埋め込む際、XSS(クロスサイトスクリプティング)対策として、ユーザー入力を扱う場合はエスケープ処理が必要です。さらに、型変換ミスやundefinedエラーを避けるため、JavaScript側で型チェックや存在チェックを入れることをおすすめします。

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

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

実際の業務アプリでは、サーバー側でセッションからユーザー情報や通知などをModelに追加し、JavaScriptで利用するパターンが多いです。以下は実用的なケース例です。

チャットや通知機能のリアルタイム表示


@Controller
public class ChatController {
  @GetMapping("/chat")
  public String chat(Model model) {
    model.addAttribute("user", "佐藤花子");
    model.addAttribute("messages", List.of("こんにちは","おはようございます","こんばんは"));
    return "chat";
  }
}

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>チャット画面</title></head>
<body>
  <h2 id="user"></h2>
  <ul id="msgList"></ul>
  <script th:inline="javascript">
    let user = '[[${user}]]';
    let messages = /*[[${messages}]]*/[];
    document.getElementById("user").textContent = user + "さんのチャット";
    messages.forEach(m => {
      let li = document.createElement("li");
      li.textContent = m;
      document.getElementById("msgList").appendChild(li);
    });
  </script>
</body>
</html>

このような構成にすると、ログインユーザーやメッセージ一覧を動的に表示でき、SPA風の使いやすいUIを実現できます。

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

8. 初心者向けのステップアップ方法
8. 初心者向けのステップアップ方法
  1. Pleiades+GradleでSpringプロジェクトを構築し、@ControllerでModelに動的データを追加する基礎を理解しましょう。
  2. Thymeleafテンプレートでth:inline="javascript"を使ってJavaScript変数に結びつけ、文字列・配列・数値を取り扱えるようにしましょう。
  3. 動的データを使ってDOM操作でリスト表示、条件表示、リアルタイム更新などを実装し、インタラクティブな画面を作りましょう。
  4. XSSや型エラー、パフォーマンスに注意しつつ、モデル設計とJavaScript処理のバランスを考慮しましょう。
  5. さらに学びたい場合は、Thymeleafのth:ajaxやWebSocket連携なども調査して、より高度な動的連携に挑戦してみましょう。

この流れで学ぶことで、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の繰り返し処理の使い方