[Seasar-user:16841] Re: [SAStruts] 画面遷移時の受け渡しパラメータについて

Minoru Taki [E-MAIL ADDRESS DELETED]
2009年 2月 6日 (金) 08:47:12 JST


ひが様

 瀧です。

 返信ありがとうございます。

> 次のアクションにパラメータを渡したいなら、基本はFORWARD。
> なんで次のアクションでPOSTしたデータが渡るのが不都合なのか
> わかりません。

 すみません説明不足でした。

 これは設計/開発の進め方にも問題があるかもしれませんが、
 JSP(A),FORM(A),ACTION(A)はAさんが担当
 JSP(B),FORM(B),ACTION(B)はBさんが担当
 たまたま、両者が意識せずFORM(A),FORM(B)に
 同一のプロパティ名(同音異義語)で設計してしまうと
 フォワードの場合は、意図しない値がFORM(B)に入ってしまうことになる
 ので都合が悪いのです。(同じ意味であれば良いですが)

 事前に両者間で調整しユニークな名前で設計すべきかもしれませんが、
 現実は多数の設計/開発者が同時進行でやっていくため、なかなか調整が難しいです。
 この問題が発覚するのは画面遷移の結合テストのフェーズになってからで、
 ちょっと手戻りが発生してしまいます。

 リダイレクトだと余計は値は飛んでいかないのでいいのですが、
 その分、渡したいパラメータも渡せないというジレンマが発生します。

 QueryStringもurlPatternも本質的には同じと考えています。
 METHOD=GETを許してしまうと、ブラウザのURLを直タタキされるので、
 なるべくデータのキーは見せたくないのです。
 せっかくSeasarなので、interceptorでうまく仲介できないかと考えたりするのですが。
 やっぱりセッションで渡して、ライフサイクルをしっかり管理するのが
 筋かもしれませんね。

----- Original Message ----- 
From: "Yasuo Higa" <[E-MAIL ADDRESS DELETED]>
To: <[E-MAIL ADDRESS DELETED]>
Sent: Thursday, February 05, 2009 7:48 PM
Subject: [Seasar-user:16836] Re: [SAStruts] 画面遷移時の受け渡しパラメータについて


> ひがです。
> 
>> 瀧と申します。
>> 
>>  お世話になります。
>> 
>>  SAStrutsでの画面遷移についてご相談したいことがあります。
>> 
> 次のアクションにパラメータを渡したいなら、基本はFORWARD。
> なんで次のアクションでPOSTしたデータが渡るのが不都合なのか
> わかりません。
> 
> どうしてもREDIRECTで遷移したい場合は、
> ・URLの一部に埋める(urlPatternを使う)
> ・QueryStringで渡す。
> ・セッションで渡す
> の3パターンから選ぶのが普通です。
> 
>>  SAStrutsのドキュメントで下記文章があります。
>> 
>> >JSPはアクションを経由して表示したほうがいいでしょう。
>> >最初は、アクションで何もすることがなくても、後から必要になった場合に、
>> >URLが変わらないようにするためです。
>> >また、セキュリティ的なチェックを入れたいときも、 
>> >アクションを経由するほうが何かと便利です。 
>> >
>> >リダイレクトで、他のJSPへ遷移するときも、戻り値を下記のようにして、 アクションを経由するようにします。 
>> >
>> > return "/アクション名/メソッド名?redirect=true";
>> 
>>  これはつまり、アクション連鎖を述べていると思いますが、
>>  画面遷移redirect=trueの場合
>> 
>>   JSP(A)→ACTION(A)
>>             ↓(redirect)
>>  JSP(B)←ACTION(B)
>> 
>>  のようになります。
>>  リダイレクトにする理由は、フォワードするとJSP(A)でPOSTしたデータがACTION(B)に渡されるのが
>>  都合が悪いからと認識しています。
>> 
>>  このリダイレクトでBに行った場合、METHOD="GET"になるため、
>>  画面遷移時に受け渡したいパラメータはURLのQueryStringに繋げるか、
>>  セッションに格納などしなければなりません。
>>  QueryStringはブラウザのURLに見えてしまい、セキュリティ上問題となる場合があるため、
>>  できればデータを格納したくありません。セッション経由は渡すのは楽ですが、消し込み等の考慮が必要です。
>> 
>>  リダイレクトでなくフォワードであれば、RequestAttributeが使えるのですが、
>>  JSP(A)のPOSTパラメータがACTION(B)に渡ってしまいます。
>> 
>>  何か良い方法はありませんでしょうか?
>>  (皆さんどのように実装しているのでしょうか?半分Strutsの質問になっているかもしれません・・・。)
>> 
>>  SAStrutsでの画面遷移の受け渡しパラメータの処理方法の定石等があれば、
>>  アドバイスを頂きたく、よろしくお願いいたします。
>> 
>> 
>> 
>> _______________________________________________
>> 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 メーリングリストの案内