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?

📘 Vol.8.16:【Struts2】データ一覧表示の最適化 〜 `<s:iterator>` / `<s:property>` 実践パターン 〜

Posted at

※ 本章は「データ一覧表示の最適化」シリーズとなります


🔍 本記事の目的

Struts2における「一覧表示」の実装は、あらゆる業務画面に登場します。
本記事では、実務で役立つ一覧出力パターンを整理し、UIの見やすさ・実装効率・保守性を高めるテクニックを紹介します。


✅ 対象読者

  • Struts2での一覧出力に悩んでいる方
  • <s:iterator><s:property> を使いこなしたい方
  • 表構造の整理や出力条件の切り分けに課題を感じている方

📌 内容一覧

セクション 内容
1. <s:iterator> の基本構文と使用例 単純な繰り返し表示
2. <s:iterator> 内での条件分岐・入れ子表現 条件付き出力、ネスト構造対応
3. 空リスト時のメッセージ表示 件数0のときだけ別UI表示する方法
4. 行番号の付与方法(indexの活用) 「1, 2, 3,...」の連番表示
5. escape="false" によるHTML出力制御 HTML出力を許可する際の注意点

1. <s:iterator> の基本構文と使用例

<table>
  <tr><th>ID</th><th>名前</th><th>登録日</th></tr>
  <s:iterator value="userList">
    <tr>
      <td><s:property value="id"/></td>
      <td><s:property value="name"/></td>
      <td><s:date name="createdAt" format="yyyy/MM/dd"/></td>
    </tr>
  </s:iterator>
</table>

2. 内での条件分岐・入れ子表現

<s:iterator value="users">
  <tr>
    <td><s:property value="id" /></td>
    <td>
      <s:if test="role == 'admin'">★管理者★</s:if>
      <s:else><s:property value="name" /></s:else>
    </td>
  </tr>
</s:iterator>


3. 空リスト時のメッセージ表示

<s:if test="userList.size() == 0">
  <p>データが存在しません。</p>
</s:if>
<s:else>
  <table>...(略)</table>
</s:else>

4. 行番号の付与方法

<s:iterator value="users" status="rowStatus">
  <tr>
    <td><s:property value="#rowStatus.index + 1" /></td> <!-- 1始まり -->
    <td><s:property value="name" /></td>
  </tr>
</s:iterator>

5. HTML文字列の出力とescape属性

<!-- デフォルトではHTMLエスケープされる -->
<s:property value="comment" /> <!-- <b>強調</b> → &lt;b&gt;強調&lt;/b&gt; -->

<!-- エスケープを無効化(HTMLタグをそのまま表示) -->
<s:property value="comment" escape="false" />

⚠️ escape="false" を使う場合はXSS対策(サニタイズ)を必ず行いましょう!


🧩 実務向けTips

  • 複数の一覧表示を1画面にまとめる場合は、include入れ子を活用

  • 表のヘッダー・データを <thead>, <tbody> に分離し、構造とスタイルの分離を意識

  • 行クリックでの遷移は <tr onclick="..."> で実装すると自然な操作感に


💬 次回予告

次回【Vol.8.17】では、Struts2独自のカスタムUIタグの作成方法を解説します!
業務にフィットした独自タグを作って、UIロジックの共通化を図りましょう!

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?