Mam obiekt formularza, który ustawiłem do żądania w obsłudze żądania GET w moim kontrolerze Spring. Pierwszy użytkownik, który wchodzi na stronę, powinien utworzyć nowy obiekt formularza i ustawić żądanie. Jeśli użytkownik wysyła formularz, to obiekt formularza jest wypełniany z żądania, a teraz obiekt formularza ma wszystkie atrybuty użytkownika. Następnie formularz jest sprawdzany i jeśli sprawdzanie poprawności jest prawidłowe, formularz jest zapisywany w bazie danych. Jeśli formularz nie jest sprawdzany, chcę zapisać obiekt formularza do sesji, a następnie przekierować do strony obsługi żądań GET. Po przekierowaniu żądania do modułu obsługi GET należy sprawdzić, czy sesja zawiera obiekt formularza.Spring Framework 3 i atrybuty sesji
I zorientowali się, że nie ma @SessionAttributes („Formularz”) adnotacji na wiosnę, ale z jakiegoś powodu po robi praca, bo w czasie pierwszego, forma atrybut sesja jest null i daje błąd:
org.springframework.web.HttpSessionRequiredException: Session attribute 'form' required - not found in session
Oto mój kontroler:
@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;
}
Pomogło mi to, ale wyjątek wyrzucania, jeśli został wywołany po raz pierwszy. – digz6666
@ digz6666, patrz [# SPR-4452] (https://jira.springsource.org/browse/SPR-4452) –
Byłoby użyteczne, gdyby wiosna miała zaimplementować adnotację do parametru metody, która umożliwiała dostęp do atrybutów sesji (w w ten sam sposób można uzyskać dostęp do parametrów żądania). 'public void doSometing (@SessionAttribute (" cat ") Cat cat) {' –