HttpSessionRequiredException: атрибут сеанса 'registrationForm' требуется - не найден в сеансе - PullRequest
0 голосов
/ 14 февраля 2012

Я получаю эту ошибку только в определенных ситуациях.То, что я кодирую, это форма регистрации, вот основной код:

@Controller
@SessionAttributes("registrationForm")
@RequestMapping(value = "/registration")
public class RegistrationController
{
    @Autowired
    private RegistrationValidator registrationValidator;

    @RequestMapping(method = RequestMethod.GET)
    public String setupForm(Model model) throws Exception
    {
        return setupForm(model, new RegistrationForm());
    }

    @RequestMapping(method = RequestMethod.POST)
    public String submitForm(@ModelAttribute("registrationForm") RegistrationForm registrationForm,
                             Model model,
                             BindingResult result,
                             SessionStatus sessionStatus) throws Exception
    {
        registrationValidator.validate(registrationForm, result);

        if(result.hasErrors())
        {
            return setupForm(model, registrationForm);
        }
        else
        {
            // Do stuff

            sessionStatus.setComplete();

            return "redirect:success";
        }
    }

    private String setupForm(Model model, RegistrationForm registrationForm) throws Exception
    {
        model.addAttribute("currentYear", Calendar.getInstance().get(Calendar.YEAR));
        model.addAttribute("registrationForm", registrationForm);
        return "registration";
    }

Форма:

<form:form method="POST" modelAttribute="registrationForm">
    ...
</form:form>

Очень странная проблема, с которой я сталкиваюсь, это то, что если я очищаюданные сеанса и я сразу перехожу к /registration, весь процесс регистрации работает отлично.Но когда я вызываю страницу, которая сначала отображается на другом контроллере (т.е. на домашней странице), то я получаю сообщение об ошибке, указанное в заголовке.

Может кто-нибудь мне помочь?

Спасибо.

1 Ответ

5 голосов
/ 15 февраля 2012

Добавление этого решило проблему:

@ModelAttribute("registrationForm")
public RegistrationForm populateRegistrationForm()
{
    return new RegistrationForm();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...