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

2022-09-01 14:17:49

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

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

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


答案 1

请尝试返回字符串,并将字符串作为转发 URL。

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

答案 2

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

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


推荐