2011-09-09 14 views
28

春の要求を別のコントローラに転送する適切な方法は何ですか?別のコントローラへのSpring 3.0転送要求

@RequestMapping({"/someurl"}) 
public ModelAndView execute(Model model) { 
    if (someCondition) { 
     //forward to controller A 
    } else { 
     //forward to controller B 
    } 
} 

コントローラのすべては春で注入された依存関係を持っているので、私はちょうどそれらを作成し、それらを自分自身を呼び出すことはできませんが、私は、要求が他のコントローラに渡される属性たいです。

答えて

37

文字列を代わりに返し、文字列を前方URLにしてみてください。

@RequestMapping({"/someurl"}) 
public String execute(Model model) { 
    if (someCondition) { 
     return "forward:/someUrlA"; 
    } else { 
     return "forward:/someUrlB"; 
    } 
} 
+2

はここでもカバーしRedirectViewのための春の3.0.xのためのドキュメントへのリンク、だ「GET」:前進。 http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/htmlsingle/spring-framework-reference.html#mvc-redirecting – digitaljoel

+0

「someUrlA」をハードコードしなくても可能ですか? –

6

「redirect:controllerName」または「forward:controllerName」のようなビュー名を使用できます。後者はリクエストを別のコントローラにリルートし、前者はリクエストを別のURLにリダイレクトするようブラウザに指示します。

1

Spring RedirectViewを使用して、あるコントローラから別のコントローラへ要求をディスパッチできます。 これは、デフォルトの要求タイプによるであろう

RedirectView redirectView = new RedirectView("/controllerRequestMapping/methodmapping.do", true); 
+4

リダイレクトは前方ではありません。リダイレクトは、リダイレクトコマンドを使用してクライアントとクライアントだけに位置情報を送信し、同じ要求内の他のハンドラに委譲要求処理を転送します。 – msangel

関連する問題