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