Spring 3.0转发请求到不同的控制器

将请求在春季转发给不同的控制器的正确方法是什么?

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

所有的控制器都有Spring注入的依赖项,所以我不能只创建它们并自己调用它们,但我希望将请求属性传递给其他控制器。

尝试返回一个String,而String是前向url。

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

您可以使用视图名称,例如“redirect:controllerName”或“forward:controllerName”。 后者会将请求重新路由到另一个控制器,前者会告诉浏览器将请求重定向到另一个URL。

docs: https : //docs.spring.io/spring/docs/3.0.x/spring-framework-reference/htmlsingle/spring-framework-reference.html#mvc-redirecting-redirect-prefix

您可以使用Spring RedirectView将请求从一个控制器分派给其他控制器。 它将默认为请求类型“GET”

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