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.5:【Struts2】条件分岐タグ(s:if / s:else)徹底解説! 〜表示制御と実務応用の決定版〜

Last updated at Posted at 2025-05-21

本記事は、Struts2でJSPを書く際に頻出するタグの基本を網羅する
📘「Vol.8.0〜8.7:Struts2 タグライブラリ入門編(基本操作・最低限の知識)」 シリーズの一部です。

🧭 はじめに

本記事は「Struts2でJSPを書く時に絶対に使うタグ」を紹介するシリーズの第4弾です。

今回は s:if / s:elseif / s:else タグにフォーカス!
JSTLの c:if に慣れている方にも、Struts2の統一的な記述スタイルでより安全かつ表現力豊かな条件分岐を学んでいただけます。


🎯 対象読者

  • Struts2でWebアプリを開発している人
  • JSPで条件分岐をシンプルに書きたい人
  • JSTLとの違いに困ったことがある人
  • ログインユーザーだけに表示 など制御をしたい人

s:if / s:else タグとは?

Struts2のタグライブラリで提供されている条件分岐用のカスタムタグです。

基本構文

<s:if test="%{条件式}">
  条件が真のときに表示される内容
</s:if>
<s:elseif test="%{別の条件}">
  次に真のときに表示される内容
</s:elseif>
<s:else>
  上記すべての条件に該当しないときに表示される内容
</s:else>

  • test 属性には OGNL式 を使用

  • %{} で囲むことで式評価を有効化

💡 実用例1:ログインユーザーによる表示制御

<s:if test="%{session.user != null}">
  ようこそ、<s:property value="%{session.user.username}" /> さん!
</s:if>
<s:else>
  <a href="login.jsp">ログイン</a> してください。
</s:else>

💬 解説:

session.user に値がある=ログイン済み

ない場合はログインリンクを表示


💡 実用例2:ユーザー権限による表示切替

<s:if test="%{user.role == 'admin'}">
  <button>管理者設定</button>
</s:if>
<s:elseif test="%{user.role == 'user'}">
  <button>プロフィール編集</button>
</s:elseif>
<s:else>
  <span>ゲスト閲覧中</span>
</s:else>

🔍 OGNL式の書き方のポイント

書き方 説明
%{変数 == 値} 等価比較
%{変数 != null} nullチェック
%{リスト.size > 0} リストの件数判定
%{!条件} 否定

🛠 よくある使い方集

  • フォームの表示・非表示

  • 管理者メニューのON/OFF

  • エラーメッセージの制御

  • データの有無による表示切り替え


🔁 JSTLとの違い

JSTL (c:if) Struts2 (s:if)
EL式で書く OGNL式で書く
nullチェックが面倒 OGNLで簡潔に書ける
表現が分かれる Struts2の中で統一できる

Struts2でのJSPはロジックの再利用と一貫性が命!
条件分岐タグをマスターして、保守性の高い画面設計を実現しましょう!


📚 関連記事(Vol.8シリーズ)


🎉 次回予告:Vol.8.5 s:include / s:component でJSP部品化の極意!
「テンプレートを使い回す方法」が知りたい方はお楽しみに!


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?