beanタグライブラリ
beanタグライブラリはstruts-bean.tldに定義されている.こいつを使用すると,sessionにあるbeanなどから値を取り出せたりする.
あらかじめ,Actionクラスなどで,
request.getSession().setAttribute("hoge","fuga");
としておけば,JSPで
<bean:write name="hoge" />とするとfugaが出力される.
あらかじめ,Actionクラスなどで,
実は先に説明したSessionにいれた文字列を取り出す例は,ここで説明するパターンの特殊な場合である.つまり属性propertyを指定しなければ,nameで指定したオブジェクトがそのまま(toString())出力される.
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()が実行され,その返り値が出力される.

