【问题标题】:Spring MVC 3.1 exception : An Errors/BindingResult argument is expected to be immediately after the model attribute argumentSpring MVC 3.1 异常:Errors/BindingResult 参数应紧跟在模型属性参数之后
【发布时间】:2012-05-14 00:57:01
【问题描述】:

我升级到 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:需要一个 Errors/BindingResult 参数 紧跟在控制器方法中的模型属性参数之后 签名: java.lang.IllegalStateException:错误/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) 在 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) 
{
...
}

当我从类中删除该方法时,一切都按预期工作。

有什么想法吗?

【问题讨论】:

    标签: exception spring-mvc


    【解决方案1】:

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

    它对我有用。

    【讨论】:

      【解决方案2】:

      这是 Spring 的一个 bug,我已报告:SPR-9378

      【讨论】:

        猜你喜欢
        • 2018-06-26
        • 2013-09-09
        • 1970-01-01
        • 1970-01-01
        • 2013-03-17
        • 1970-01-01
        • 1970-01-01
        • 2012-05-30
        • 2018-11-28
        相关资源
        最近更新 更多