0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

動的リスト表示 - いまさらながら SIer向けフレームワークを自作した(10年ぶり3回目) #005

Last updated at Posted at 2026-02-06

はじめに

前回は SIcore の HTMLモックアップがそのまま実装コードになる仕組みを紹介しました。

今回は、その仕組みをベースに 「動的リスト表示」 の実装方法を解説します。

サーバーから返された配列データを、テンプレートを用いて自動的にテーブル行やリスト要素として展開する仕組みを紹介します。

この記事で書くこと

  • 動的リスト表示とは
  • テンプレートを用いた行の自動生成
  • 実装手順とコード例
  • メリット

動的リスト表示とは

SIcore では、サーバーから返された配列データ [{}, {}] を、HTML のテンプレートを用いて自動的に行要素として展開できます。

従来の JSP などでは <c:forEach> を使ってループ処理を記述する必要がありましたが、SIcore では テンプレート行を用意するだけで配列データを自動展開できます。

実装手順とコード例

ステップ1:テンプレート行を定義する

テーブルの <tbody> 内に <script type="text/html"> タグでテンプレート行を定義します。

静的HTML(テンプレート行のみ):

<table>
  <tbody id="list">
    <script type="text/html">
      <tr>
        <td><input name="list.pet_nm"></td>
        <td><input name="list.weight_kg"></td>
      </tr>
    </script>
  </tbody>
</table>

ポイント:

  • <tbody>id="list" を付ける
  • テンプレート行は <script type="text/html"> で囲む(<template> に移行予定)
  • 行要素の name 属性は list.項目名 の形式で記述する(list は JSON のキーと合わせる)

ステップ2:サーバーから配列データを取得して表示する

JavaScript:

// サーバーからレスポンスJSON受信
const req = PageUtil.getValues();
const res = await HttpUtil.callJsonService('/services/exmodule/ExampleListSearch', req);

// レスポンスJSON
// {
//   "list": [
//     {"pet_nm": "ポチ", "weight_kg": "5.0"},
//     {"pet_nm": "タマ", "weight_kg": "2.5"}
//   ]
// }

// レスポンスJSONから行を自動生成
PageUtil.setValues(res);

結果:HTMLに行が追加される

結果HTML(テンプレート行+追加行):

<table>
  <tbody id="list">
    <script type="text/html">
      <tr>
        <td><input name="list.pet_nm"></td>
        <td><input name="list.weight_kg"></td>
      </tr>
    </script>
    <tr>
      <td><input name="list.pet_nm" value="ポチ"></td>
      <td><input name="list.weight_kg" value="5.0"></td>
    </tr>
    <tr>
      <td><input name="list.pet_nm" value="タマ"></td>
      <td><input name="list.weight_kg" value="2.5"></td>
    </tr>
  </tbody>
</table>

PageUtil.setValues(res) により、配列データが自動的にテーブル行として展開されます。

明示的な行追加も可能

配列データを受け取らず、JavaScript で明示的に行を追加することもできます。

// 1行追加
PageUtil.addRow('list', {pet_nm: 'ポチ', weight_kg: '5.0'});

// 複数行追加
PageUtil.addRow('list', [
  {pet_nm: 'ポチ', weight_kg: '5.0'},
  {pet_nm: 'タマ', weight_kg: '2.5'}
]);

メリット

1. ループ処理の記述が不要

JSP の <c:forEach> や Thymeleaf の th:each のような記述が不要になります。テンプレート行を定義するだけで、配列データを自動展開できます。

2. HTMLモックアップからの移行が簡単

モックアップ段階で作成したテーブル行を <script type="text/html"> で囲むだけで、実装コードになります。

3. サーバー側はJSONを返すだけ

サーバー側(Java)はループ処理を意識せず、配列データを JSON で返すだけです。

// Javaコード
public void doExecute(Io io) {
  // DB検索
  final IoRows rows = SqlUtil.selectBulk(getDbConn(), SQL_SEL_PET);
  // 抽出結果セット
  io.putRows("list", rows);
}

おわりに

SIcore の動的リスト表示機能により、配列データの表示が簡潔に実装できるようになります。

次回は、独自HTML属性ついて紹介する予定です。

関連記事リンク

他の記事もぜひご覧ください!

SIcoreフレームワーク リンク

実装コードと資料はすべてこちらで公開しています。


読んでいただきありがとうございました!
❤いいね!をしていただけると励みになります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?