- - PR -
[Struts] Actionで sendRedirect は使わないべき?
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-03-16 14:31
こんにちは。
StrutsのActionServletを継承したクラスにて、 response.sendRedirect(String) は使わないほうが ベターでしょうか。 せっかくフレームワーク上で動かすので、なるべく低レベルAPIは つかわないように心がけていたのです。。。 どうしても パラメータ付URLにリダイレクトしたいときに、 ActionMapping.findForward(String) を使用すると、 パラメータを渡せないのかなと思いました。 また、ActionクラスはActionForwardを戻り値としているので、 sendRedirectを使用した場合、、、、、
と記述しなければならないですよね。 皆さんはStrutsでパラメータ付URLにリダイレクトするときに、 sendRedirectを使用しているのでしょうか? ふとおもった疑問です。 | ||||||||
|
投稿日時: 2005-03-16 15:24
ベターだと思います。
うーーん。パラメータ付URLの使用が絶対条件でしょうか? あまり、そのようなケースに出会っていないので・・・ ちょっと調べたところ ActionForward#setPath(String) ActionForward#setRedirect(boolean) を使えば、Strutsフレームワークだけで解決できそうな気がしますが・・・ | ||||||||
|
投稿日時: 2005-03-16 15:57
tak3さんこんにちは。
setPathとかあったんですね。 ためしに早速。。。 ActionForward forward = new ActionForward(); forward.setRedirect(true); forward.setPath("newAction.do?param=true"); return forward; を書いてみたところ、見事にリダイレクトされました。 これで、 return null とか書かなくてよさそうです。 用途としては、、、、 例えば、 mail.do?mailID=1000 で MAIL_ID 1000 のメールを取得するときに、 前提として認証済みでなければならないとします。 未認証時にアクセスしてきたばあい、ログインページにとばします。 そこで、ログインページに http://host/login.do?from=mail.do?mailID=1000 とし、 ログイン認証後、 http://host/mail.do?mailID=1000 にリダイレクトしたいなぁ。。。 と思っていたところです。 これでなんとかなりそうです。 ありがとうございました! | ||||||||
|
投稿日時: 2005-03-16 23:28
sturts-config.xml の設定(で redirect="true" とか書けば OOTB でリダイレクトしてくれますよ。
| ||||||||
|
投稿日時: 2005-03-16 23:50
org.apache.struts.action.RedirectingActionForwardと言うのがあります。
名前の通り、リダイレクトを行ってくれるものです。 ActionForwardで属性等の設定を行う必要がありません。 ただそれだけですが・・・
こんな感じで使用します。 フレームワーク内ではフレームワーク層から見て より低レベルであるAPIの使用は控えるべきです。 | ||||||||
|
投稿日時: 2005-03-17 11:56
インギさん、こんにちは。 struts-config.xml で設定できるのは 固定のパスだけですよね? クエリーストリングを動的に生成してリダイレクトを行いたかったので。。。 | ||||||||
|
投稿日時: 2005-03-17 11:58
かつのりさん、こんにちは。 これいいですね。 綺麗なコードが書けそうです。 使わせていただきます!ありがとうございました! |
1