2

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) 
{
...
}

クラスからメソッドを削除すると、すべてが期待どおりに機能します。

何か案は?

4

2 に答える 2

1

これは Spring のバグです。報告しました: SPR-9378

于 2012-05-04T15:56:10.223 に答える
0

Spring バグ SPR-9378 を読んで、@ModelAttribute メソッドからモデル変数を削除する必要があります。

@ModelAttribute
public void populateModel(Model model) { //this method haven't Libro Object
    model.addAttribute(Genero.values());
    model.addAttribute(EstadoLibro.values());
}

@RequestMapping(method=RequestMethod.POST)
public String grabarLibro(@Validated @ModelAttribute Libro libro, BindingResult result) {
   ...
}

それは私のために働いた。

于 2012-08-16T20:55:00.613 に答える