0

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

4

3 に答える 3

1

これはきれいではないかもしれません。しかし、私たちはどちらかrefererが何らかの価値を持っているかどうかを仮定することができます:

1:referer実際に値があり、3番目の実験を行います。

2:少し複雑です。値をチェックする必要があります。何も設定されていない場合は、値を設定します。空refererの場合のデフォルトページが必要です。これは、最終的には更新が必要です。一時的なリダイレクト(301)またはメタタグを介したページ。referer/messages/inbox

于 2012-10-02T11:21:57.010 に答える
1

${referer}は、という名前のリクエスト属性を参照しrefererますが、リクエストパラメータとして渡します。

そのパラメータを属性として手動で保存しない限り、代わりに以下を使用する必要があります${param.referer}

于 2012-10-02T11:11:50.700 に答える
0

まあ、唯一の明白な解決策は次のとおりです。

コントローラから実行すると、呼び出しreturn "redirect:" + referer ;元の場所にページがリダイレクトさ/messages/newれます。

于 2012-10-02T11:30:11.280 に答える