OGNL とは、Object Graph Navigation Language の略である。
オブジェクトの参照はシャープ記号(#)でマークされる。
OGNLに関する情報が少なすぎて、Struts2で作成するうえで大変困る。
ognl.orgはなくなっているし。
OGNL – Apache Commons OGNL – Object Graph Navigation Library
http://commons.apache.org/proper/commons-ognl/
【Action プロパティの参照】
<s:property value="hoge"></s:property>
ActionContext 内のその他 の(ルートでない) オブジェクトは、# 表記を使ってレンダリングすることができる。
<s:property value="#session.hoge"></s:property> <s:property value="#session['hoge']"></s:property> <s:property value="#request['hoge']"></s:property>
【コレクション (Maps、 Lists、 Sets)】
リストの構文は、 {e1,e2,e3}である。
この表現により要素として文字列の”name1″、 “name2” 、”name3″が含まれるリストが生成される。
またデフォルトで”name2″が選択されている。
<s:select label="label" name="name" list="{'name1','name2','name3'}" value="%{'name2'}"></s:select>
マップの構文は、#{key1:value1,key2:value2}である。
この表現により要素として文字”foo” には文字 “foovalue”が、”bar” には文字 “barvalue”が設定される。
<s:select label="label" name="name" list="#{'foo':'foovalue', 'bar':'barvalue'}"></s:select>
カスタムタグおよびOGNLの中にカスタムタグは動作しないので注意。
【参考サイト】
OGNL – ソフトウェア技術ドキュメントを勝手に翻訳
http://www.techdoctranslator.com/struts2/tag-developers-guide/ognl
Struts2のカスタムタグ内で用いるOGNL式?について – Java Solution会議室
http://ap.atmarkit.co.jp/bbs/core/fjava/32623
How do we get access to the session
http://struts.apache.org/release/2.2.x/docs/how-do-we-get-access-to-the-session.html