[mayaa-user:243] Re: validatorエラーで再表示時にbeanの値がとれない

Katsuhiko Nagashima katsuhiko.nagashima @ gmail.com
2006年 8月 2日 (水) 23:09:20 JST


永島です。

この問題はS2Strutsが原因で発生しています。

Strutsでは、POJO Formを受け取ったとき、BeanValidatorFormでラップして処理します。
<s2struts:init>タグの初期表示のときは、DtoそのままがRequestに設定されるので
<m:write id="hogeId" value="${fooDto.hoge}" />
のような処理が行えますが、
Actionを経由するとPOJO FormのfooDtoはBeanValidatorFormでラップされて
Requestに設定されるので
<m:write id="hogeId" value="${fooDto.instance.hoge}" />
のように処理しなければならなくなります。
#strutsカスタムタグはこの違いを考慮しているので問題ありません。

S2Strutsで対応しようと思っておりますが、時間がかかりそうです。

暫定の回避案ですが、下のようにすると期待した動作をすると思います。
    <m:if test="${fooDto.instance != null}">
        <m:exec script="${ request.setAttribute('fooDto', fooDto.instance); }"/>
    </m:if>
    <m:write value="${fooDto.hoge}" />

ご迷惑をおかけしますが、当面は上記回避案で対応できるか検討していただけないでしょうか。


06/08/02 に 六<rokugensai @ gmail.com> さんは書きました:
> こちらでははじめまして、六と申します。
> ML登録早々で質問失礼致します。
>
> 現在S2Struts + mayaaで開発しています。
>
> 画面の初期表示時を、<s2struts:init>タグで行っているのですが
> 最初の表示では
>
> <m:write id="hogeId" value="${fooDto.hoge}" />
>
> で表示できているところが、
> strutsというかcommons-validatorのチェックで
> 再表示された時に、表示されなくなってしまいます。
> strutsカスタムタグで
>
> <bean:write m:id="hogeId" name="fooDto" property="hoge" />
>
> とすると問題なく表示されます。
> ならば<bean:write>を使えという話なのですが
> 実はやりたい事は
>
> <m:echo ...>
>   <m:attribute name=....
> </m:echo>
>
> で属性をbeanの値で変えたいのです。これも上記と同じ現象がおきます。
>
> バージョンは1.0.4、1.0.6、1.1.0を試しましたが同じです。
>
> MLの過去ログを調べたのですが同様の件が見当たらず、
> ポストした次第です。
>
> 何か回避策などありますか?宜しく御願いします。
>
> _______________________________________________
> mayaa-user mailing list
> mayaa-user @ ml.seasar.org
> https://www.seasar.org/mailman/listinfo/mayaa-user
>


-- 
Katsuhiko Nagashima


mayaa-user メーリングリストの案内