本記事は、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.1:【Struts2】タグライブラリの全体像と種類を把握する 〜JSP開発で使えるタグ一覧と役割まとめ〜
-
📘 Vol.8.2:【Struts2】JSPタグライブラリ実践テンプレート集 〜現場で即使える!フォーム・URL・セッション活用まとめ〜
-
📘 Vol.8.4:【Struts2】「s:action」「s:token」タグ徹底解説!〜アクション呼び出しと二重送信防止の最前線〜
-
📘 Vol.8.6:【Struts2】画面部品の共通化! s:include / s:component 徹底解説 〜JSPヘッダー/フッターの再利用でメンテ効率UP〜
🎉 次回予告:Vol.8.5 s:include / s:component でJSP部品化の極意!
「テンプレートを使い回す方法」が知りたい方はお楽しみに!