[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 メーリングリストの案内