目前,我正在尝试在Spring MVC 3.1中实现Post/Redirect/Get模式。如何正确地保留和恢复模型数据和验证错误?我知道可以使用RedirectAttributes在POST方法中保存模型和BindingResult。但是,从flash范围中的GET方法中恢复它们的正确方式是什么?
我已经完成了以下POST操作:
@RequestMapping(value = "/user/create", method = RequestMethod.POST)
public String doCreate(@ModelAttribute("user") @Valid User user, BindingResult result, RedirectAttributes rA){
if(result.hasErrors()){
rA.addFlashAttribute("result", result);
rA.addFlashAttribute("user", user);
return "redirect:/user";
}
return "redirect:/user/success";
}
以下是获取用户创建表单的GET请求:
@RequestMapping(value = "/user", method = RequestMethod.GET)
public ModelAndView showUserForm(@ModelAttribute("user") User user, ModelAndView model){
model.addObject("user", user);
model.setViewName("userForm");
return model;
}
这样可以在出现错误时保存给定的用户数据。但是恢复错误的正确方式是什么?(BindingResult)我想用Spring表单标签在表单中显示它们:
<form:errors path="*" />
此外,如何从get方法访问Flash范围也是一个有趣的问题?