Struts2におけるJSPテンプレートの設計を、実務レベルの再利用性と保守性を前提に最適化する「完成形」をご紹介します。
Vol.8.18〜8.19の内容をベースに、「ページ種別ごとのテンプレート分離」や「共通レイアウトの継承設計」といったプロジェクトで役立つ構成パターンを解説します。
✅ 本記事で扱う内容
-
ページ種別(一覧/フォーム/認証系など)ごとのテンプレート階層設計
-
共通ベーステンプレート
baseTemplate.jsp
の導入 -
<s:include>
による柔軟な UI 出し分け -
ロール別ヘッダ・メニューの差し替え設計(一般/管理者)
📁 ディレクトリ構成例(実務パターン)
/WebContent/
├── common/
│ ├── baseTemplate.jsp # 共通レイアウトのベース
│ ├── header.jspf # 共通ヘッダー部品
│ ├── footer.jspf # 共通フッター部品
│ ├── menu_user.jspf # 一般ユーザー用メニュー
│ ├── menu_admin.jspf # 管理者用メニュー
│
├── template/
│ ├── listTemplate.jsp # 一覧表示画面用テンプレート
│ ├── formTemplate.jsp # 入力フォーム画面用テンプレート
│ ├── authTemplate.jsp # 認証画面(ログインなど)テンプレート
🛠 テンプレート階層のポイント
観点 | 内容 |
---|---|
📌 ページ種別テンプレート化 | 用途に応じてテンプレートを明確に分離(一覧/フォーム/認証) |
📌 共通テンプレート継承 | 各テンプレートが baseTemplate.jsp をベースに構成 |
📌 includeによる分離設計 |
<s:include page="..."/> で部品化したUIを柔軟に組み込み |
📌 ロール別出し分け対応 |
<c:if> などで、セッション中の権限ごとに動的UIを出し分け |
💡 応用シナリオ(実務展開例)
-
サイト全体メンテナンス時に専用テンプレートで切り替え
-
モバイル/PC のテンプレートを User-Agent 判定で自動切替
-
ライト/ダークモードの動的テンプレート切替(フロント制御併用)
🔄 関連記事
-
📘 Vol.8.18:【Struts2】JSP構造のテンプレート最適化と共通レイアウト〜 / header.jspf / 共通テンプレート構成の実務設計 〜
-
📗 Vol.8.19:【Struts2】テンプレートの再利用応用 〜 レイアウト共通化 × 動的UI部品の出し分け設計 〜
🔜 次回予告
次回 Vol.9.0 からは、Struts2の *バリデーション/コンバージョン処理 をテーマに進めていきます。
validate()
メソッドや validation.xml
、conversion.properties
を活用した、実務で使える入力チェック&変換の基本と応用パターンを取り上げていきます。