speg03の雑記帳

主に未来の自分のために試したことなどを記録しています

ModelAttributeとBindingResult

Spring MVCのコントローラでValidationの結果を調べたり追加したりするためのBindingResult。ハンドラメソッドの引数の順番があるとは思わず、少しはまってた。

// ダメな例
@RequestMapping(method = RequestMethod.POST)
public String processSubmit(@ModelAttribute("pet") Pet pet,
    Model model, BindingResult result) { … }
// 正しい例
@RequestMapping(method = RequestMethod.POST)
public String processSubmit(@ModelAttribute("pet") Pet pet,
    BindingResult result, Model model) { … }

BindingResultは対応するModelAttributeの引数のすぐ後に書かないとダメらしい。

参考

上記のコード片はここからの引用