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.15:【Struts2】状態に応じたUI出し分け制御 〜 ログイン状態・権限・入力内容による表示切替 〜

Posted at

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


Struts2での画面制御において、「誰に」「いつ」「何を」表示するかの出し分けは、実務では欠かせないUIパターンです。

本記事では、ログイン状態や権限、パラメータやActionの状態によって画面要素を出し分けるための代表的な手法を、OGNL式やStruts2タグを活用しながら紹介します。


🎯 1. はじめに:UI出し分けの必要性

多くの業務システムでは、以下のようなUI出し分けが必要になります:

  • 管理者だけに「削除」ボタンを表示する
  • 入力が完了したときだけ「確認へ進む」ボタンを表示する
  • ログイン中のユーザー専用ナビゲーションを表示する

Struts2では、OGNL式 + <s:if> / <s:else>タグ を組み合わせることで、これらのUI出し分けが柔軟に実現できます。


💡 2. ログイン状態・ユーザー情報による表示制御

セッション情報に格納されている user_iduser_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 実務での「共通処理部品化」事例を予定しています。

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?