[s2struts-dev:49] Re: S2Struts1.3でいつくか質問
Takahiro Yuasa
[E-MAIL ADDRESS DELETED]
2008年 4月 14日 (月) 14:13:13 JST
> 面倒じゃないと言いつつまだMLに流していないですけど(^^
お手すきになったらで構いませんよ~
> http://s2struts.seasar.org/ja/12xTo13x.html#LessconfigHotdeploy
> を見ると、設定ファイルで「*Dto」もprototypeにするようにしていますね。
あ!見落としてました。
> しかし、なぜprototypeなのでしょうね?
> ちょっと、理解できていません。
>
> requestやsessionにすると、Seasar2とStrutsが同じ名前で
> HttpServletRequestやHttpSessionにインスタンスを格納することがある
> と思いますが、それを避けたかったからでしょうか。
試しに
FormCreatorのライフサイクル: request
ActionFormのscope: request
にしてみたら、見事に落ちますねぇ(^^;
-> POJOアクションにPOJOフォームのプロパティが定義してあると、
S2ContainerがDIを行うときに、
PropertyDescImpl#setValue(Object target, Object value)
で、ActionFormオブジェクトの型が合わないと言われてエラーに
なりました。
調べてみると、value の中身がPOJOフォームではなくS2BeanValidatorFormに
なっていました。どうやら、Container管理下のPOJOフォームを、S2Strutsが
WrapS2BeanValidatorFormコマンドで上書きしてしまっているのが原因のよう
ですね。
上記のことから考えると、FormCreatorのライフサイクルとActionFormのscope
が同じになるとNGで、さりとて
FormCreator: request、ActionForm: session や、
FormCreator: session、ActionForm: request
としても他でトラブるから、prototypeとせざるを得ないんでしょうね。
ついでとなってしまって恐縮ですが、S2StrutsにJavaDoc追加してくださって
非常に重宝しております!
ありがとうございます<(_ _)>
--
Takahiro Yuasa
s2struts-dev メーリングリストの案内