Search on the blog

2013年1月23日水曜日

Learn Struts(2)

Strutsの勉強2日目。ActionForm Beanのscopeについて。

<action path="/sample1" type="sample1.Action1" name="form1"
            scope="request">
    <forward name="success" path="/sample1.jsp" />
</action>

struts-config.xmlで上のような定義をすれば、

bean:write=<bean:write name="form1" scope="request"/>

のようにsample1.jspからbeanを参照できる。

気になったのはscopeのところ。これでbeanのライフサイクルを指定できるのは分かるけど、内部ではどのようにデータを管理しているのだろう。

RequestProcessor#processActionFormに書いてた。

if ("request".equals(mapping.getScope())) {
    request.setAttribute(mapping.getAttribute(), instance);
} else {
    HttpSession session = request.getSession();

    session.setAttribute(mapping.getAttribute(), instance);
}

そういうことか。まあ普通に考えるとそうか。。ってことは、JSPから
request scope bean = <%=request.getAttribute("form1") %>
session scope bean = <%=session.getAttribute("form1") %>

とすれば"form1"という名前のActoinForm Beanを参照できるってことか。
出来た、出来た。

0 件のコメント:

コメントを投稿