newMessage.jsp
にビューを表示しています/messages/new
。新しいメッセージが正常に送信されたら、ユーザーを元のページにリダイレクトしたいと思います。多くのビュー(受信トレイ、苦情ページなど)に新しいメッセージリンクが埋め込まれているため、これは多くのページになる可能性があります。
実験#1
試しreturn "redirect:" + request.getHeader("Referer")
ましたが、うまくいきません。その理由は、ユーザーが[送信]をクリックするたびに、同じURL(/messages/new
)にユーザーを送信しているため、[送信]をクリックするReferer
とヘッダーがに設定されるためです。/messages/new
実験#2
次に、を設定してみました@RequestParam
(これは適切なことのように思えました)。したがって、/messages/new?referer=/inbox
受信トレイビュー、/messages/new?referer=/complaints
苦情ビューなどで呼び出します。しかし、ここでも、ユーザーが[送信]をクリックするaction="new"
と、トリガーされ、referer
渡したパラメーターが失われます。
実験#3
最後に、を編集することにしaction="new"
ましたaction="new?referer=${referer}"
。これはかなりうまく機能しましたreferer
が、空の場合、URLは/messages/new?referer=
、かなりきれいに見えないという点が異なります。
実験#4
(3)を使用しても、最終的に(メッセージの送信に成功した後)return "redirect:" + my_domain_name + referer ;
コントローラーで実行すると、要求はの古い値で渡されreferer
、結果のURLはmy_domain_name/referer?referer=value_from_previous_call
正しいはずです。my_domain_name/referer