2013-10-09 3 views
17

私はmycontrollerメソッドに記述した場合:spring mvcでリダイレクトした後、コントローラからのパラメータを渡す方法はありますか?

return "redirect:url"; 

何のパラメータが(それは多分のcontrolerメソッドまたはJSPページ)のURLに渡すのだろうか?

+0

モデルのすべての単純なプロパティ。ここで説明するようにhttp://docs.spring.io/spring/docs/3.2.4.RELEASE/spring-framework-reference/html/mvc.html#mvc-redirecting。 –

答えて

35

RedirectAttributesを使用すると、リダイレクトURLにほぼすべてのデータを渡すことができます:

@RequestMapping(value="/someURL", method=GET) 
public String yourMethod(RedirectAttributes redirectAttributes) 
{ 
    ... 
    redirectAttributes.addAttribute("rd", "rdValue"); 
    redirectAttributes.addFlashAttribute("fa", faValue); 
    return "redirect:/someOtherURL"; 
} 

あなたが属性を追加するaddAttributeを使用

が、これはターゲットのリダイレクトURLになってしまいます。これらの属性はリクエストパラメータを構成するために使用され、クライアント(ブラウザ)はこれらのパラメータを使用して redirect URLに新しいリクエストを送信します。これにより、リダイレクト属性として文字列またはプリミティブを使用することが制限されています。

addFlashAttributeを使用すると、これらの属性はリダイレクト(通常はセッション中)の前に一時的に保存され、リダイレクト後に要求に使用可能になり、すぐに削除されます。 flashAttributesを使用する利点は、(セッションに保存されている)任意のオブジェクトをフラッシュ属性として追加できることです。

+0

いいえ...私はrequest.getParameterMap()でRedirectAttributesを使用しました。そして、それはすべてのURLを持つ新しいURLにリダイレクトするために正常に動作します。例:マーケティングパラメータを再掲載する(utm_source) –

関連する問題