Spring提供了以下选项,通过使用RedirectAttributes将属性(params)传递给重定向页面。
@Controller
@RequestMapping("/")
public class RedirectController {
@GetMapping("/redirectWithRedirectView")
public ModelAndView redirectWithUsingRedirectView(RedirectAttributes attributes) {
attributes.addAttribute("attribute", "redirectWithRedirectView");
return new ModelAndView("redirect:redirectedUrl");
}
}
即使我们只是将属性附加到重定向URL,也可以实现同样的效果,如下所示
@Controller
@RequestMapping("/")
public class RedirectController {
@GetMapping("/redirectWithRedirectView")
public ModelAndView redirectWithUsingRedirectView() {
return new ModelAndView("redirect:redirectedUrl?attribute=redirectWithRedirectView");
}
}
两者都做同样的工作。如果我们使用RedirectAttributes,我们会在内存方面获得任何好处吗?我猜,在第二种情况下,如果每个请求的属性值发生变化,我们将构建单独的ModelAndView对象。