在spring控制器类中重定向到url
部分地方全部使用return "redirect:/abc.htm";
。
也使用return new ModelAndView("redirect:/abc.htm")
。
任何人都请解释两种陈述的区别和相似之处。
在哪种情况下必须使用。
罗希特夏尔:
使用RedirectAttribute从旧网址获取值。
在这种情况下,在使用此return "redirect:/abc.htm";
时获得价值
但不在此return new ModelAndView("redirect:/abc.htm")
RedirectAttributes
答案 0 :(得分:43)
陈述:
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
的最佳用途是将请求转发到新网址,以便您可以在单个返回值中同时返回model
和view
。对于重定向方案,如果要传递属性,则应使用RedirectAttributes
。