Spring 3.1.1.RELEASE にアップグレードしたところ、次のメソッドで例外が発生しました。
@RequestMapping(method = RequestMethod.POST, params = "_finish")
public ModelAndView doPostFinish(@PathVariable("runEnvironmentName") RunEnvironment pEnvironment, @ModelAttribute("command") JobSpecNewCommand pCommand, BindingResult pErrors)
{
...
}
次の例外をスローします。
java.lang.IllegalStateException: エラー/BindingResult 引数が必要です コントローラーメソッドのモデル属性引数の直後 サイン: java.lang.IllegalStateException: コントローラー メソッド シグネチャのモデル属性引数の直後に Errors/BindingResult 引数が必要です: public org.springframework.web.servlet.ModelAndView de.wwag.infra.oocsd.projectAdmin.fe.natures .hudson.jobspecs.RunEnvJobSpecNewController.doPostFinish(de.wwag.infra.oocsd.projectAdmin.common.domain.RunEnvironment,de.wwag.infra.oocsd.projectAdmin.fe.natures.hudson.jobspecs.JobSpecNewCommand,org.springframework.validation .BindingResult) at org.springframework.web.method.annotation.ErrorsMethodArgumentResolver.resolveArgument(ErrorsMethodArgumentResolver.java:62) ...
ご覧のとおり、メソッド シグネチャは期待どおりです。BindingResult 引数は、モデル属性の後に宣言されます。
同じクラスで、次のメソッドが宣言されています。
@ModelAttribute("otherJobSpecs")
public List<JobReference> modelOtherJobSpecs(@PathVariable("runEnvironmentName") RunEnvironment pEnvironment, @ModelAttribute("command") JobSpecNewCommand pCommand)
{
...
}
クラスからメソッドを削除すると、すべてが期待どおりに機能します。
何か案は?