将请求在春季转发给其他控制器的正确方法是什么?
@RequestMapping({"/someurl"})
public ModelAndView execute(Model model) {
if (someCondition) {
//forward to controller A
} else {
//forward to controller B
}
}
所有控制器都有Spring注入的依赖项,所以我不能只创建它们并自己调用它们,但我希望将请求属性传递给其他控制器。
答案 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。
答案 2 :(得分:1)
您可以使用Spring RedirectView
将请求从一个控制器发送到其他控制器。
它将默认为请求类型“GET”
RedirectView redirectView = new RedirectView("/controllerRequestMapping/methodmapping.do", true);