ファイヤープロジェクト
beanタグライブラリ
2003-07-20T15:13+09:00   matsu
beanタグライブラリはstruts-bean.tldに定義されている.こいつを使用すると,sessionにあるbeanなどから値を取り出せたりする.
あらかじめ,Actionクラスなどで,
request.getSession().setAttribute("hoge","fuga");
としておけば,JSPで
<bean:write name="hoge" />
とするとfugaが出力される.
あらかじめ,Actionクラスなどで,
Sample sample = new Sample();
request.getSession().setAttribute("hoge",sample);
などとしておいて,
<bean:write name="hoge" property="fuga" />
とすると,hogeのgetFuga()が呼び出されて,その返り値が出力される.
実は先に説明したSessionにいれた文字列を取り出す例は,ここで説明するパターンの特殊な場合である.つまり属性propertyを指定しなければ,nameで指定したオブジェクトがそのまま(toString())出力される.
あらかじめ,Actionクラスなどで,
Sample sample = new Sample();
request.getSession().setAttribute("hoge",sample);
などとしておいて,JSPで
<bean:define id="foo" name="hoge" property="fuga" />
<bean:write name="foo" property="fooValue" />
などとすると,まず一行目で属性idで指定した変数fooにhoge.getFuga()の返り値が格納され,二行目でfoo.getFooValue()の返り値が出力される.
JSPでは,そのJSPへforwardしたActionで指定したActionFormBeanは自動的にsessionに突っ込まれるらしく,こちらで突っ込むことなく使用できる.したがって,struts-config.xmlで
<action    path="/HogeAction"
           type="HogeActionForm"
           name="Hoge" >
<forward name="result"        path="/Result.jsp" />
</action>
などとしておくとResult.jspで
<bean:write name="Hoge" property="fuga" />
でActionFormBeanに指定したHogeActionFormクラスのインスタンス(論理名Hoge)に対してgetFuga()が実行され,その返り値が出力される.
matsu(C)
Since 2002
Mail to matsu