SAStrutsにて、個人でのWebアプリ開発勉強をしています。
アクション間でアクションフォームを引き渡す方法について、迷っています。
##やりたいこと
一覧入力画面(input.jsp)で入力した内容をもとに、結果表示画面(result.jsp)を表示する。
##現在の実装
いまのところ、下記のように実装して動作しています。
①上記画面それぞれについて、アクションおよびアクションフォームを作成。
(InputAction、InputForm、ResultAction、ResultForm)
②遷移の流れ
input.jspからのサブミットでInputAction#execを呼び出す
↓
HttpSessionにInputFormをsetAttribute
戻り値でResultAction#showResultにリダイレクト
↓
ResultActionにてHttpSessionからInputFormをgetAttribute
java
1public class InputAction { 2 3 @Resource 4 @ActionForm 5 protected InputForm inputForm; 6 7 @Resource 8 protected HttpSession session; 9 10 @Execute(validator=false) 11 public String exec() { 12 session.setAttribute("inputForm", inputForm); 13 return "../result/showResult?redirect=true"; 14 } 15}
java
1public class ResultAction { 2 3 @Resource 4 @ActionForm 5 protected ResultForm resultForm; 6 7 @Resource 8 protected HttpSession request; 9 10 @Execute(validator=false) 11 public String showResult() { 12 ResultService sv = new ResultService(); 13 sv.exec((InputForm)request.getAttribute("inputForm"), resultForm); 14 return "result.jsp"; 15 } 16 17}
##質問
1)リダイレクトではなくフォワードでアクションフォームを渡す方法は?
『Seasar2徹底入門』を参考にしたため(画面遷移についてリダイレクトが紹介されていた)、上記のような実装にしたのですが、そもそもフォワードでアクションフォームを別のアクションに渡すことは可能でしょうか?(推奨されていないのでしょうか?)
2)リダイレクトにおいて、QueryStringでアクションフォームをパラメータとするには?
リンク内容
上記にて、
どうしてもREDIRECTで遷移したい場合は、
・URLの一部に埋める(urlPatternを使う)
・QueryStringで渡す。
・セッションで渡す
の3パターンから選ぶのが普通です。
とありました。2つめの方法について、アクションフォームをパラメータとすることはできるのでしょうか? その場合、どのような実装になるのでしょうか?
3)セッションにアクションフォームをセットした場合に気をつけるべきことは?
セッションにアクションフォームを格納することで、実装において留意すべきこと(危険性など)は何があるのでしょうか。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/04 14:09
2017/06/04 14:48
2017/06/04 16:04