カテゴリ: Thymeleaf 更新日: 2025/12/27

Thymeleaf JavaScriptで配列を操作するテクニック|初心者向け完全ガイド

Thymeleaf JavaScriptで配列を操作するテクニック
Thymeleaf JavaScriptで配列を操作するテクニック

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

新人

「ThymeleafからJavaScriptに配列データを渡して操作ってできますか?」

先輩

「うん、サーバーから配列を渡してJavaScriptで加工したり表示したりできるよ。」

新人

「初心者でもわかるように、基礎から教えてもらえますか?」

先輩

「もちろん。まずはThymeleafとJavaScriptの連携の基本から見ていこう!」

1. ThymeleafとJavaScriptの連携の基本

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

Thymeleafは、Springのテンプレートエンジンで、HTMLにサーバー側のデータを埋め込めます。JavaScriptと組み合わせると、サーバーから渡した配列やオブジェクトをそのままJavaScriptで扱えて、動的な画面を簡単に作れます。

開発環境はpleiades+Gradle、@Controllerからデータを渡す構成を想定しています。Bootstrapなどは使わず、Thymeleaf+JavaScriptだけで完結させます。

2. JavaScriptで配列を操作する基礎

2. JavaScriptで配列を操作する基礎
2. JavaScriptで配列を操作する基礎

JavaScriptで配列を扱うときは、forEachやmap、filterなどのメソッドを使うのが基本です。配列をループしたり、新しい配列を作ったり制御できます。


<!DOCTYPE html>
<html>
<head><title>配列操作サンプル</title></head>
<body>
  <script>
    let fruits = ["リンゴ","バナナ","オレンジ"];
    fruits.forEach(function(fruit) {
      console.log("果物:" + fruit);
    });
    let upper = fruits.map(function(fruit) {
      return fruit.toUpperCase();
    });
    console.log(upper); // ["リンゴ","バナナ","オレンジ"] を大文字表示
  </script>
</body>
</html>

この例ではforEachで配列を繰り返し、mapで変換した新しい配列を作っています。これらはThymeleafから受け取った配列でも同じように使えます。

3. サーバーから渡された配列データをJavaScriptで操作する方法

3. サーバーから渡された配列データをJavaScriptで操作する方法
3. サーバーから渡された配列データをJavaScriptで操作する方法

Pleiades+Gradle環境で@ Controllerから配列を渡し、Thymeleafテンプレート内でJavaScript変数として受け取る方法について説明します。


@Controller
public class FruitController {
    @GetMapping("/fruits")
    public String fruits(Model model) {
        model.addAttribute("fruits", List.of("リンゴ","バナナ","オレンジ","イチゴ"));
        return "fruits";
    }
}

上記のコントローラで定義した配列を、th:inline="javascript"属性を使ってJavaScript側に埋め込んで操作します。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>配列取得サンプル</title></head>
<body>
  <script th:inline="javascript">
    let fruits = /*[[${fruits}]]*/[];
    console.log(fruits); // ["リンゴ","バナナ","オレンジ","イチゴ"]
  </script>
</body>
</html>

この方法により、サーバー側で定義した文字列配列をそのままJavaScriptで操作できるようになります。

4. よく使う配列操作(forEach、map、filterなど)の具体例

4. よく使う配列操作(forEach、map、filterなど)の具体例
4. よく使う配列操作(forEach、map、filterなど)の具体例

取得した配列に対して、forEach、map、filterといった配列操作を行い、表示や加工に活かす具体例を紹介します。

配列の内容をリスト表示する(forEach)


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>配列表示サンプル</title></head>
<body>
  <ul id="fruitList"></ul>
  <script th:inline="javascript">
    let fruits = /*[[${fruits}]]*/[];
    const ul = document.getElementById("fruitList");
    fruits.forEach(function(fruit) {
      const li = document.createElement("li");
      li.textContent = fruit;
      ul.appendChild(li);
    });
  </script>
</body>
</html>

配列を加工して別の配列を作る(map)


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>配列加工サンプル</title></head>
<body>
  <script th:inline="javascript">
    let fruits = /*[[${fruits}]]*/[];
    let upperFruits = fruits.map(function(fruit) {
      return fruit + " ��";
    });
    console.log(upperFruits);
  </script>
</body>
</html>

条件で配列を絞り込む(filter)


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>配列絞り込みサンプル</title></head>
<body>
  <script th:inline="javascript">
    let fruits = /*[[${fruits}]]*/[];
    let filtered = fruits.filter(function(fruit) {
      return fruit.indexOf("ン") !== -1;
    });
    console.log(filtered); // 「リンゴ」「イチゴ」など「ン」を含む要素
  </script>
</body>
</html>

複数の配列操作を組み合わせる

mapとfilterを組み合わせて、条件に合う要素を加工する方法もよく使われます。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>複合操作サンプル</title></head>
<body>
  <script th:inline="javascript">
    let fruits = /*[[${fruits}]]*/[];
    let result = fruits
      .filter(f => f.length >= 3)
      .map(f => f + "★");
    console.log(result);
  </script>
</body>
</html>

このように、サーバーから受け取った配列をJavaScriptで自在に操作できると、画面の表示や動作を豊かにできます。

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

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

実際のSpring+Thymeleaf+JavaScriptプロジェクトでは、ユーザーリストや商品リストなどの配列操作が頻出します。たとえば管理画面でユーザー一覧を取得し、JavaScriptで表示制御やフィルター、並べ替えを行うケースです。

ユーザー一覧に絞り込みと表示切り替えを実装


@Controller
public class UserController {
  @GetMapping("/users")
  public String users(Model model) {
    model.addAttribute("users", List.of("田中","鈴木","佐藤","高橋"));
    return "users";
  }
}

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>ユーザー絞り込み</title></head>
<body>
  <input id="search" placeholder="名前で絞り込む"/>
  <ul id="userList"></ul>
  <script th:inline="javascript">
    let users = /*[[${users}]]*/[];
    let input = document.getElementById("search");
    let ul = document.getElementById("userList");
    function render(list) {
      ul.innerHTML = "";
      list.forEach(u => {
        let li = document.createElement("li");
        li.textContent = u;
        ul.appendChild(li);
      });
    }
    input.addEventListener("input", function(){
      let filtered = users.filter(u => u.includes(input.value));
      render(filtered);
    });
    render(users);
  </script>
</body>
</html>

このコードでは、入力欄に文字を入力するとJavaScriptで配列をフィルターし、その結果をHTMLリストとして表示します。初心者でも実用感あるUI操作を体験できます。

6. 配列操作で注意すべきポイント

6. 配列操作で注意すべきポイント
6. 配列操作で注意すべきポイント

配列操作をするときは、文字列の大文字・小文字や空白、null・undefinedなどに注意が必要です。また、配列が空の場合の処理や、リアルタイム入力中の応答の負荷も考慮しましょう。

大文字・小文字の違いを吸収する方法


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>大文字小文字対応</title></head>
<body>
  <input id="search" placeholder="名前で絞り込む"/>
  <ul id="userList"></ul>
  <script th:inline="javascript">
    let users = /*[[${users}]]*/[];
    let input = document.getElementById("search");
    let ul = document.getElementById("userList");
    input.addEventListener("input", function(){
      let val = input.value.toLowerCase();
      let filtered = users.filter(u => u.toLowerCase().includes(val));
      // ...render略
    });
  </script>
</body>
</html>

空配列への対応とエラーチェック

配列が未定義や空の場合に備えて、JavaScript側で事前チェックを入れると安全です。


if (!Array.isArray(users) || users.length === 0) {
  ul.textContent = "ユーザーが見つかりません";
} else {
  render(users);
}

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

7. 初心者向けのステップアップ方法
7. 初心者向けのステップアップ方法
  1. Pleiades+GradleでSpringプロジェクトを作り、@Controllerで配列データを渡す基本を押さえる。
  2. Thymeleafのth:inline="javascript"を使ってJavaScriptに配列を取得し、forEachやmap、filterで操作してみる。
  3. ユーザー検索機能や商品フィルタなどの実用的な機能をJavaScriptで実装して、画面表示を動的に変えてみる。
  4. エラーハンドリングや入力チェック、大文字小文字対応など、実務的な処理を追加して完成度を高めていく。

こうした手順で進めることで、Spring+Thymeleaf+JavaScriptの組み合わせによる配列操作の理解が深まり、実際のWebアプリケーション開発に役立ちます。

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

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

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

ThymeleafとJavaScriptは一緒に使えるのですか?

はい、ThymeleafはHTMLテンプレート内にサーバーのデータを埋め込むためのテンプレートエンジンで、JavaScriptと組み合わせて使うことができます。サーバー側から渡した配列データをJavaScriptで受け取り、動的に表示や操作が可能です。
コメント
コメント投稿は、ログインしてください

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

カテゴリの一覧へ
新着記事
New1
SpringのWeb開発(Spring MVC)
Spring MVCルーティングの基本を完全解説!ワイルドカードとパス変数を初心者向けにやさしく理解
New2
SpringのWeb開発(Spring MVC)
ViewResolverの設定と使い方を完全ガイド!初心者でもわかるSpring MVCのビュー解決
New3
Thymeleaf
Thymeleaf th属性の種類まとめ!初心者向けに解説
New4
Thymeleaf
初心者向けにThymeleaf 公式ドキュメントの活用法とおすすめ情報
人気記事
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のDB操作
JPAの標準クエリメソッド(findById, findAll)を完全解説!初心者でもわかるデータ取得の基本
No.5
Java&Spring記事人気No5
Springの基本
Spring Bootの環境変数の設定方法をやさしく解説!初心者向けapplication.propertiesの使い方
No.6
Java&Spring記事人気No6
Springの基本
Spring Bootのデフォルトログ設定を徹底解説(Logback / SLF4J)
No.7
Java&Spring記事人気No7
Spring認証(Spring Security)
セッション管理の基本(@SessionAttributes)を完全解説!初心者でもわかるセッションの仕組み
No.8
Java&Spring記事人気No8
SpringのWeb開発(Spring MVC)
ループ処理(th:each)の基本を完全ガイド!Thymeafの繰り返し処理の使い方