37

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

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

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

请任何人解释这两种说法的异同。

以及它必须在哪种情况下使用。


罗希特:

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

4

1 回答 1

52

声明:

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 时,这样您就可以在一个返回值中同时返回两者model并一起返回。view对于重定向场景,如果你想传递属性,你应该使用RedirectAttributes.

于 2013-10-22T11:57:11.420 回答