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