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);