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.14:【Struts2】フォーム部品の共通化・再利用 〜 入力UIの部品化で保守性UP!〜

Last updated at Posted at 2025-05-23

※ 本章は「UI制御編(実務向け UI 出し分け・エラー表示制御・再利用設計)」シリーズとなります


Struts2での開発が進む中で、「同じようなフォームUI を複数の画面で使い回したい…!」と思ったことはありませんか?

本記事では、フォームの共通化・再利用をテーマに、<s:form><%@ include %> を使った保守性の高い実務的な構成方法を紹介します!


✅ 本記事の対象者

  • フォーム構造を複数画面で使い回したい
  • <s:form> の設計を見直したい
  • JSPの共通化設計に迷っている
  • 画面ごとの保守をラクにしたい

🏗 共通フォーム構造の必要性

以下のようなケース、よくあります。

  • 「ユーザー登録」画面と「ユーザー編集」画面で同じフォーム構造を使いたい
  • 「検索条件フォーム」や「投稿フォーム」などを複数画面で再利用したい

💡 ポイント: 同じUI構造をコピペして管理すると、保守コストがどんどん上がってしまいます!


📦 解決策:共通JSPとしてフォーム部品を切り出す!

共通フォームは別ファイル(JSP)として分離し、呼び出し元で <%@ include %> を使って読み込むのが基本です。

📁 構成例

/view/
├── UserCreateScreen.jsp
├── UserEditScreen.jsp
└── common/
└── userForm.jsp ← 共通フォーム部品!

💻 実装例:ユーザー情報入力フォームを共通化

🔹 共通部品(common/userForm.jsp)

<%@ taglib prefix="s" uri="/struts-tags" %>

<tr>
  <th>ユーザー名</th>
  <td><s:textfield name="user.username" /></td>
</tr>
<tr>
  <th>メールアドレス</th>
  <td><s:textfield name="user.email" /></td>
</tr>

🔹 呼び出し元(UserCreateScreen.jsp)

<%@ include file="/view/common/userForm.jsp" %>

✅ 複数画面から同じUI部品を使えるように!

🧩 応用編:条件による分岐も可能!

たとえば「編集画面ではIDは表示のみ」といった制御もできます。

<%-- 共通フォーム部品の中で条件分岐 --%>
<% boolean isEdit = request.getRequestURI().contains("Edit"); %>

<tr>
  <th>ユーザーID</th>
  <td>
    <% if (isEdit) { %>
      <s:property value="user.id" />
    <% } else { %>
      <s:textfield name="user.id" />
    <% } %>
  </td>
</tr>

※上記は JSTLやOGNLを活用してもっと柔軟に設計可能です!


📌 注意点とベストプラクティス

注意点 対処法・ベストプラクティス
フォーム内のタグ名が競合する name属性をプレフィックス付きに設計しておくなど工夫を
共通部品が肥大化する 用途ごとに userForm_search.jsp などに分離
リクエスト属性に依存しすぎる model-driven を使ってActionからしっかり渡す

✨ まとめ

  • ✅ 同じ構造のフォームはJSPファイルとして共通化しよう

  • ✅ <%@ include %> を使って画面側に組み込む

  • ✅ 柔軟な制御が必要なら条件分岐やOGNLも活用

  • ✅ 保守性・再利用性が劇的に向上!


🔗 次回予告:Vol.8.15【状態に応じた表示制御】へ!

次回は「ボタンの表示/非表示の切り替え」や「ログインユーザーに応じたUI制御」など、状態管理と連動したUI制御Tipsをお届けします!

📚 前の記事:Vol.8.13:エラーメッセージ制御編
📚 まとめ記事:Vol.8.9〜8.12 総まとめ

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?