2012-02-14 1 views
0

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

@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> 

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

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

спасибо.

+0

делает другой контроллер вы используете (например, домашняя страница) имеют один и тот же атрибут сеанса, как «registrationForm»? – Nani

+0

@Nani Нет, не так ли? – satoshi

ответ

5

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

@ModelAttribute("registrationForm") 
public RegistrationForm populateRegistrationForm() 
{ 
    return new RegistrationForm(); 
}