У меня есть объект формы, который я задал для запроса в обработчике запроса GET в моем контроллере Spring. При первом входе пользователя на страницу необходимо создать новый объект формы и задать запрос. Если пользователь отправляет форму, тогда объект формы заполняется из запроса, и теперь объект формы имеет все атрибуты пользователя givern. Затем форма проверяется и если проверка правильна, форма сохраняется в базе данных. Если форма не подтверждена, я хочу сохранить объект формы в сеанс, а затем перенаправить на страницу обработки запроса GET. Когда запрос перенаправляется на GET-обработчик, тогда он должен проверить, содержит ли сеанс объект формы.
Я выяснил, что в Spring есть аннотация @SessionAttributes ( "form" ), но по какой-то причине следующее не работает, потому что в первый раз форма атрибута сеанса имеет значение null, и она дает ошибку:
org.springframework.web.HttpSessionRequiredException: Session attribute 'form' required - not found in session
Вот мой контроллер:
@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;
}