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

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による動的データ連携の理解が深まり、実務でもすぐに役立てられるスキルになります。

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

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

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

ThymeleafとJavaScriptの連携方法とは何ですか?

ThymeleafとJavaScriptの連携方法とは、Spring Bootの@Controllerから渡された値をHTMLテンプレートに埋め込み、JavaScriptで動的に処理する技術のことです。th:inline="javascript"を使って、サーバーサイドの値をJavaScript変数に代入することで、画面制御や条件表示が可能になります。
コメント
コメント投稿は、ログインしてください

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

カテゴリの一覧へ
新着記事
New1
Springの基本
Spring Bootの@ConfigurationPropertiesScanとは?設定クラス自動検出の仕組みを解説
New2
SpringのAPI開発(REST & GraphQL)
Spring Boot GraphQLでResolverを理解しよう!初心者でもわかるデータ取得の基本
New3
SpringのAPI開発(REST & GraphQL)
Spring Boot GraphQL入門!Query・Mutation・Subscriptionの基本を初心者向けに解説
New4
SpringのDB操作
JPQLのパラメータバインド(:name / ?1)の使い方を完全解説!初心者でも迷わない基本の考え方
人気記事
No.1
Java&Spring記事人気No1
Thymeleaf
Thymeleaf とは?初心者向けにThymeleafの基本を徹底解説
No.2
Java&Spring記事人気No2
SpringのWeb開発(Spring MVC)
DispatcherServletの仕組みを理解する!初心者向け完全ガイド
No.3
Java&Spring記事人気No3
Springの基本
Spring Bootのデフォルトログ設定を徹底解説(Logback / SLF4J)
No.4
Java&Spring記事人気No4
SpringのDB操作
JPAの標準クエリメソッド(findById, findAll)を完全解説!初心者でもわかるデータ取得の基本
No.5
Java&Spring記事人気No5
SpringのWeb開発(Spring MVC)
Spring Bootでの@GetMappingと@PostMappingの基本を完全解説!初心者でも理解できる使い方
No.6
Java&Spring記事人気No6
SpringのWeb開発(Spring MVC)
@Controller と @RestController の違いを完全解説!初心者向けSpring MVC入門
No.7
Java&Spring記事人気No7
Spring認証(Spring Security)
セッション管理の基本(@SessionAttributes)を完全解説!初心者でもわかるセッションの仕組み
No.8
Java&Spring記事人気No8
SpringのWeb開発(Spring MVC)
ループ処理(th:each)の基本を完全ガイド!Thymeafの繰り返し処理の使い方