2012-02-14 6 views
0

このエラーは特定の状況でのみ発生します。HttpSessionRequiredException:セッション属性 '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> 

は私が持っている非常に奇妙な問題は、私はセッションデータをクリアし、私の場合ということです直接/registrationに行くと、登録プロセス全体が完全に機能します。しかし、別のコントローラ(つまりホームページ)にマッピングされているページを呼び出すと、タイトルに指定されたエラーが発生します。

誰でも手伝ってもらえますか?

ありがとうございます。

+0

あなたが使用する他のコントローラーが(すなわち、ホーム・ページ)「がregistrationForm」と同じセッション属性を持っていませんの? – Nani

+0

@ナニいいえ、そうでしょうか? – satoshi

答えて

5

これは問題解決の追加:

@ModelAttribute("registrationForm") 
public RegistrationForm populateRegistrationForm() 
{ 
    return new RegistrationForm(); 
} 
関連する問題