※ 本章は「UI制御編(実務向け UI 出し分け・エラー表示制御・再利用設計)」シリーズとなります
Struts2での画面制御において、「誰に」「いつ」「何を」表示するかの出し分けは、実務では欠かせないUIパターンです。
本記事では、ログイン状態や権限、パラメータやActionの状態によって画面要素を出し分けるための代表的な手法を、OGNL式やStruts2タグを活用しながら紹介します。
🎯 1. はじめに:UI出し分けの必要性
多くの業務システムでは、以下のようなUI出し分けが必要になります:
- 管理者だけに「削除」ボタンを表示する
- 入力が完了したときだけ「確認へ進む」ボタンを表示する
- ログイン中のユーザー専用ナビゲーションを表示する
Struts2では、OGNL式 + <s:if>
/ <s:else>
タグ を組み合わせることで、これらのUI出し分けが柔軟に実現できます。
💡 2. ログイン状態・ユーザー情報による表示制御
セッション情報に格納されている user_id
や user_role
を使って、表示内容を切り替えるのが基本です。
<%-- 管理者のみ表示 --%>
<s:if test="#session.user_role == 'admin'">
<s:submit value="削除する" />
</s:if>
#session.プロパティ名
の形式でアクセスできます。
🧩 3. 入力内容やパラメータによる出し分け
URLパラメータやフォームパラメータで出し分けたいときは、#parameters
を使います。
<%-- URLパラメータ「mode=edit」のときのみ表示 --%>
<s:if test="#parameters.mode[0] == 'edit'">
<p>編集中の内容が表示されます。</p>
</s:if>
#parameters.パラメータ名[0]
で、値を取得可能です。
🔁 4. フラグ(Actionプロパティ)による条件分岐パターン
Actionクラス内に「表示フラグ用のプロパティ」を定義して、JSP側で使う方法も実務で多用されます。
Actionクラス側:
private boolean showSubmitButton;
public boolean isShowSubmitButton() {
return showSubmitButton;
}
JSP側:
<s:if test="showSubmitButton">
<s:submit value="送信する" />
</s:if>
フラグの切り替えをAction側に寄せることで、JSP側のロジックを簡潔に保てます。
🎨 5. OGNL式で複雑な条件にも対応
OGNLでは、複数の条件を組み合わせた評価式も使用可能です。
<s:if test="#session.user_role == 'admin' && editMode == true">
<s:submit value="管理者編集モードで保存" />
</s:if>
条件が複雑になる場合は、見通しを重視して Action 側に切り出す のも良いアプローチです。
📌 6. Tips:出し分けが増えすぎたときの整理法
UI制御の条件が増えすぎた場合は、以下のようなリファクタリングがおすすめです:
-
Action に表示制御用のフラグプロパティを追加
-
ViewModel的な中間オブジェクトに分離
-
JSP の中で直接ビジネスロジックを記述しすぎない
✅ 7. まとめ
Struts2では、OGNL式や <s:if>
タグを活用することで、状態に応じた柔軟なUI出し分けが可能です。
状態の種類 | 典型的な出し分け例 |
---|---|
ログイン状態 / 権限 | 管理者用ボタン、ナビゲーション切替 |
パラメータ / URL情報 | 編集モード vs 閲覧モードのUI出し分け |
Actionの状態・フラグ | 入力完了時のボタン切替、確認画面UIの出現 |
実務でのUI制御は「表示対象」「表示条件」「表示タイミング」の3軸で設計することで、わかりやすく保守しやすいコードになります。
📘 次回は Vol.8.x の総まとめ or 実務での「共通処理部品化」事例を予定しています。