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

时间:2013-10-22 11:33:54

标签: java spring spring-mvc

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

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

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

任何人都请解释两种陈述的区别和相似之处。

在哪种情况下必须使用。


罗希特夏尔:

使用RedirectAttribute从旧网址获取值。 在这种情况下,在使用此return "redirect:/abc.htm";时获得价值 但不在此return new ModelAndView("redirect:/abc.htm") RedirectAttributes

有什么区别吗?

1 个答案:

答案 0 :(得分:43)

陈述:

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

做同样的事情:redirectsabc.htm的请求。如果返回的视图名称具有 前缀redirect:,这被认为是需要重定向的特殊指示。视图名称的其余部分将被视为重定向URL。

声明

return "redirect:/abc.htm"

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

使用ModelAndView,您可以在一个返回值中同时返回modelview

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

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