[Seasar-user:20690] Re: [SAStruts] multipart/form での配列プロパティについて
Hiroshi Yamamoto
[E-MAIL ADDRESS DELETED]
2011年 3月 29日 (火) 13:31:45 JST
ひがさま
山元です。
> 遷移先にアクションを指定している場合は、そうなります。
了解しました。
これは想定されている動作ということですね。
> アクションを経由しないようにするか、
> フォームをセッションに置かないようにするかですね。
> フォームをセッションに置かないなら、resetメソッドは不要です。
挙げていただいた、いずれかの方法にて対応したいと思います。
ありがとうございました。
2011年3月29日13:23 Yasuo Higa <[E-MAIL ADDRESS DELETED]>:
> ひがです。
>
>> 山元です。
>> 調査してみました。
>>
>> 現状、バリデーションでエラーになった時に、遷移先の画面データを初期化する
>> 必要があるため、エラー画面遷移用のactionメソッドをフォワード先に指定しています。
>>
>> このフォワードの際、multipart/form-dataでは、リクエストと、フォワードで、
>> 作成されるパラメータ(S2RequestProcessor#getAllParameters)の内容が異なるようです。
>> (マルチパートでない場合は、リスエストとフォワードでパラメータの内容は同じだが、
>> マルチパートの場合はフォワード時のパラメータが"SAStruts.method"のみ)
>>
> 遷移先にアクションを指定している場合は、そうなります。
>
> アクションを経由しないようにするか、
> フォームをセッションに置かないようにするかですね。
> フォームをセッションに置かないなら、resetメソッドは不要です。
>
>> リスエスト時と、フォワード時で、それぞれActionForm#resetが呼ばれますが、
>> この時に、上記した問題があるため、リクエスト時は問題ないのですが、
>> フォワード時のresetで初期化された値が戻らずに、消失してしまうようです。
>>
>>
>> 2011年3月24日18:23 Yasuo Higa <[E-MAIL ADDRESS DELETED]>:
>> > ひがです。
>> >
>> >> 山元と申します。
>> >>
>> >> multipart/form-dataのformで、バリデーションでエラーとなった場合に、
>> >> 遷移先の画面で、配列プロパティのみ値がなくなってしまうのですが、
>> >> 考えられる原因などありますでしょうか。
>> >>
>> >> バリデーションでエラーとならなかった場合は、actionで正しく値が取得できますし、
>> >> formをmultipart/form-dataではなくしエラーにした場合でも、画面で値が再現されます。
>> >>
>> > sa-struts-tutorialの画面にmultiboxを足して試してみましたが、
>> > 配列のプロパティはそのまま残ってましたよ。
>> >
>> >> <s:form action="/hoge/" method="post" enctype="multipart/form-data">
>> >> <c:forEach items="${items}" var="item" varStatus="status">
>> >> <input type="text" name="items[${status.index}]" value="${item}" />
>> >> </c:forEach>
>> >> ...
>> >>
>> >> public class HogeForm implements Serializable {
>> >> public String[] items;
>> >> public void reset() {
>> >> items = new String[5];
>> >> }
>> >> ...
>> >>
>> >> 環境は下記の通りです。
>> >>
>> >> SAStruts 1.0.4-sp8
>> >> Seasar 2.4.43
>> >>
>> >> お手数をおかけしますが、よろしくお願いします。
>> >> _______________________________________________
>> >> Seasar-user mailing list
>> >> [E-MAIL ADDRESS DELETED]
>> >> https://ml.seasar.org/mailman/listinfo/seasar-user
>> >>
>> > _______________________________________________
>> > Seasar-user mailing list
>> > [E-MAIL ADDRESS DELETED]
>> > https://ml.seasar.org/mailman/listinfo/seasar-user
>> >
>>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
Seasar-user メーリングリストの案内