Spring 仕様が述べたように、@ModelAttribute はマッピング ハンドラーの前に実行され、@SessionAttribute はモデル属性をセッションに保持します。
以下のシナリオを検討してください。コントローラーが呼び出された後にフォーム Bean が作成され、セッション属性としても設定されます。次に MenuController が呼び出されると、 createForm() が再度実行され、別の新しいフォーム Bean が作成されます。私の質問は、この最新の作成されたフォーム Bean はセッション属性として設定されますか? また、どのフォーム Bean がメソッド bookList() のパラメータにバインドされますか?
皆さんが助けてくれることを願っています。ありがとうございました。
@Controller
@RequestMapping("/store")
@SessionAttribute("form")
public class MenuController {
@ModelAttribute("form")
public Form createForm() {
return new Form();
}
@RqeustMapping("/book")
public String bookList(@ModelAttribute("form") Form form){
//processing the form
}
}