我有我在Spring控制器中的GET请求处理程序中请求的表单对象.第一次用户进入页面时,应该创建一个新的表单对象并设置为request.如果用户发送表单,则表单对象将从请求中填充,现在表单对象具有所有用户givern属性.然后验证表单,如果验证正常,则将表单保存到数据库.如果未验证表单,我想将表单对象保存到会话,然后重定向到GET请求处理页面.当请求被重定向到GET处理程序时,它应该检查session是否包含表单对象.
我已经发现Spring中有@SessionAttributes("form")注释,但由于某些原因,后续工作无效,因为第一次会话属性形式为null并且它给出了错误:
org.springframework.web.HttpSessionRequiredException: Session attribute 'form' required - not found in session
Run Code Online (Sandbox Code Playgroud)
这是我的控制器:
@RequestMapping(value="form", method=RequestMethod.GET)
public ModelAndView viewForm(@ModelAttribute("form") Form form) {
ModelAndView mav = new ModelAndView("form");
if(form == null) form = new Form();
mav.addObject("form", form);
return mav;
}
@RequestMapping(value="form", method=RequestMethod.POST)
@Transactional(readOnly = true)
public ModelAndView saveForm(@ModelAttribute("form") Form form) {
FormUtils.populate(form, request);
if(form.validate())
{
formDao.save();
}
else
{
return viewForm(form);
}
return null;
}
Run Code Online (Sandbox Code Playgroud)