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

Mon*_*lan 33 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

Deb*_*kia 45

声明:

return "redirect:/abc.htm"
return new ModelAndView("redirect:/abc.htm")
Run Code Online (Sandbox Code Playgroud)

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

随着声明

return "redirect:/abc.htm"
Run Code Online (Sandbox Code Playgroud)

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

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

ModelAndView modelAndView =  new ModelAndView("redirect:/abc.htm");
modelAndView.addObject("modelAttribute" , new ModelAttribute());
return modelAndView;
Run Code Online (Sandbox Code Playgroud)

但是,客户端(浏览器)将为URL创建的新重定向请求中的属性值不可用/abc.htm.最好的使用ModelAndView是当你将请求转发到一个新的URL,这样就可以同时返回model,并view在一个单一的返回值在一起.对于重定向方案,如果要传递属性,则应使用RedirectAttributes.