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

时间:2011-09-09 18:53:03

标签: java spring-mvc

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

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

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

3 个答案:

答案 0 :(得分:37)

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

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

答案 1 :(得分:6)

您可以使用视图名称,例如“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

答案 2 :(得分:1)

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

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