重定向和modelandview内部重定向之间的区别


问题内容

在spring控制器类中重定向到url

  • 有些地方全部使用return "redirect:/abc.htm";

  • 也使用return new ModelAndView("redirect:/abc.htm")

任何人都请解释这两种陈述的异同。

在什么情况下必须使用它。


罗希特:

我正在使用RedirectAttribute从旧网址获取值。在这种情况下,使用此功能会获得价值,return "redirect:/abc.htm";
但不能获得此价值 return new ModelAndView("redirect:/abc.htm")
有什么区别吗RedirectAttributes


问题答案:

声明:

return "redirect:/abc.htm"
return new ModelAndView("redirect:/abc.htm")

做同样的事情:redirects的请求abc.htm。如果返回的视图名称带有前缀redirect:,则将其识别为需要重定向的特殊指示。视图名称的其余部分将被视为重定向URL。

与声明

return "redirect:/abc.htm"

您只能返回重定向视图名称。

随着ModelAndView你便可返回model,并view在一个单一的返回值:

ModelAndView modelAndView =  new ModelAndView("redirect:/abc.htm");
modelAndView.addObject("modelAttribute" , new ModelAttribute());
return modelAndView;

但是,属性值将在客户端(浏览器)将为URL发出的新重定向请求中不可用/abc.htm。最好的用法ModelAndView是将请求转发到新URL时,以便您可以将两者modelview一起返回为单个返回值。对于重定向方案,如果要传递属性,则应使用RedirectAttributes