thymeleafの仕組みについて

indexメソッドの引数にShainFormを入れないとエラーになるのは、shainForm=nullとなってしまいshainForm.numberが参照できないためです。

(1) indexメソッドを、省略しないで書くと以下のようになります。

java

1@RequestMapping("/input")2public String index(@ModelAttribute ShainForm shainForm, Model model) {3 model.addAttribute("shainForm", shainForm);4 return "input.html";5}

(2) @ModelAttributeを使うと、データバインディングによってmodelにデータが入るため、modelは省略できます。

java

1@RequestMapping("/input")2public String index(@ModelAttribute ShainForm shainForm) {3 return "input.html";4}

(3) @ModelAttributeも省略できるため、全て省略するとご提示頂いたコードになります。

java

1@RequestMapping("/input")2public String index(ShainForm shainForm) {3 return "input.html";4}5// 上記の場合、Thymeleaf側でshainForm.number=ブランクとして参照できます

上記理由により、(1)~(3)は全て同じ処理になります。ただし、引数を削除した場合は、shainFormが存在しない(=null)ため、shainFormのオブジェクトが参照できません。

java

1@RequestMapping("/input")2public String index() {3 return "input.html";4}5// 上記の場合、Thymeleaf側でshainForm.numberが参照できません

コメントを投稿

0 コメント