本記事は、Struts2でJSPを書く際に頻出するタグの基本を網羅する
📘「Vol.8.0〜8.7:Struts2 タグライブラリ入門編(基本操作・最低限の知識)」 シリーズの一部です。
✅ はじめに
Struts2のJSP開発で頻繁に登場する <s:〜>
タグたち。その中で欠かせない「共通言語」が OGNL(Object Graph Navigation Language) です。
本記事は、Struts2タグライブラリ徹底解説シリーズ「Vol.8」の基礎として、タグを深く理解するための OGNL入門ガイド となっています。
🔍 OGNLとは?
- Object Graph Navigation Language の略。
- Javaオブジェクトの プロパティを文字列ベースで辿るための式言語。
- Struts2では、ほぼすべての
<s:〜>
タグの中で使われています。
<s:property value="user.name" />
この user.name の部分が OGNL式 です。
🧠 どう使われるのか?
Struts2のタグライブラリでは、主に次の用途でOGNLが使われます:
用途 | 例 | 説明 |
---|---|---|
プロパティ参照 | user.name |
JavaBeanのプロパティ呼び出し |
条件分岐 | user.age > 18 |
比較や論理式にも使える |
メソッド呼び出し | user.getName() |
Javaメソッドも呼び出せる |
リストアクセス | users[0].name |
配列やListの要素参照 |
マップアクセス | settings['lang'] |
Mapのキーアクセス |
📘 ValueStackとの関係
Struts2では、アクションやモデルのオブジェクトは ValueStack(値スタック) という構造で管理されます。
OGNL式はこのValueStackの中にあるオブジェクトに対して評価されるため、 直接セッターやゲッターを書かなくてもアクセス可能 になります。
public class User {
private String name;
public String getName() { return name; }
}
public class SomeAction extends ActionSupport {
private User user = new User();
public User getUser() { return user; }
}
<!-- user.getName() と等価 -->
<s:property value="user.name" />
🔑 よく使うOGNL式(チートシート)
<s:property value="user.name" /> <!-- プロパティ表示 -->
<s:if test="user.age >= 18">OK</s:if> <!-- 条件式 -->
<s:property value="items[0].title" /> <!-- 配列/List要素 -->
<s:property value="map['key']" /> <!-- Mapキーアクセス -->
<s:property value="user.getName()" /> <!-- メソッド呼び出し -->
<s:property value="name?.toUpperCase()" /> <!-- nullセーフ演算子(OGNL 3.x) -->
🚫 よくあるエラー
エラー | 原因 |
---|---|
No property found for xxx |
プロパティ名のスペルミス、もしくはgetter未定義 |
Cannot invoke method |
publicメソッドでない or 引数ありのメソッド呼び出し |
空白ページになる | OGNL式評価に失敗して出力されない(null) |
💡 実務Tips
-
フォーム送信時にもOGNLが裏で使われており、name="user.name" のようなバインディングが可能。
-
条件式に文字列比較や複雑なロジックを入れるときは、タグではなくJava側で処理した方が可読性が高まる。
-
OGNL式はテンプレートに埋め込めるが、過度なロジックは避けるのが実務流儀。
🧩 本シリーズとの位置づけ
このOGNL入門は、以下のStruts2タグを理解するための 「基礎体力」 です。
-
s:property, s:if, s:iterator, s:select
-
s:set, s:push, s:include, s:action
-
s:form, s:textfield, s:token など
→ Vol.8.1以降の記事を読む前にぜひ抑えておきたい内容!
📝 まとめ
ポイント | 内容 |
---|---|
OGNLとは | Javaオブジェクトを式で参照する仕組み |
Struts2との関係 | ValueStack上のデータをタグで操作するために使う |
書き方 |
user.name や items[0].title など |
実務Tips | わかりやすく、使いすぎないのがポイント |
▶️ 次回予告
次は改めて「📘 Vol.8.1」として、Struts2タグライブラリの全体像と種類を解説します!
📚 関連記事(Vol.8シリーズ)
-
📘 Vol.8.1:【Struts2】タグライブラリの全体像と種類を把握する 〜JSP開発で使えるタグ一覧と役割まとめ〜
-
📘 Vol.8.2:【Struts2】JSPタグライブラリ実践テンプレート集 〜現場で即使える!フォーム・URL・セッション活用まとめ〜
-
📘 Vol.8.4:【Struts2】「s:action」「s:token」タグ徹底解説!〜アクション呼び出しと二重送信防止の最前線〜
-
📘 Vol.8.5:【Struts2】条件分岐タグ(s:if / s:else)徹底解説! 〜表示制御と実務応用の決定版〜
-
📘 Vol.8.6:【Struts2】画面部品の共通化! s:include / s:component 徹底解説 〜JSPヘッダー/フッターの再利用でメンテ効率UP〜