[s2struts-dev:50] Re: S2Struts1.3でいつくか質問

Toshihiro Nakamura [E-MAIL ADDRESS DELETED]
2008年 4月 14日 (月) 15:24:56 JST


中村(taedium)です。

> 調べてみると、value の中身がPOJOフォームではなくS2BeanValidatorFormに
> なっていました。どうやら、Container管理下のPOJOフォームを、S2Strutsが
> WrapS2BeanValidatorFormコマンドで上書きしてしまっているのが原因のよう
> ですね。

なるほど、理解できました。
自分の環境でも簡単に再現できました。

> 上記のことから考えると、FormCreatorのライフサイクルとActionFormのscope
> が同じになるとNGで、さりとて
>  FormCreator: request、ActionForm: session や、
>  FormCreator: session、ActionForm: request
> としても他でトラブるから、prototypeとせざるを得ないんでしょうね。

そういうことですね。

FormCreatorを作った理由は、SMART deployの命名規約を
使って、同一サブアプリケーション配下にあるActionとFormをマッピングする
ことだけだったんでしょうね。
(インスタンスの生成は不要だった)

もし、そうならば、理想的には
SubApplicationActionFormNamingRuleのような
ActionFormNamingRuleの実装クラスを作成し、
このクラスでSMART deployの命名規約を使ってActionFormの名前を
作成すればよかったのかもしれません。
で、BindingUtilでも、その規約に従ってActionにActionFormFormをセット
すれば、挙動としてはFormCreatorを使った場合と同じになりそうです。

SubApplicationActionPathNamingRuleと対応がとれるし、
不要なインスタンスは作成されないしで、
分かりやすい気がします。
(この対応をすることはいまのところ考えていないですけど)

> ついでとなってしまって恐縮ですが、S2StrutsにJavaDoc追加してくださって
> 非常に重宝しております!
> ありがとうございます<(_ _)>

役に立ってよかったです。
半分というかほとんど自分のために書いたのですけど(^^;
-- 
Nakamura Toshihiro <[E-MAIL ADDRESS DELETED]>



s2struts-dev メーリングリストの案内