Java 获取方法Spring注释控制器时添加错误

Java 获取方法Spring注释控制器时添加错误,java,spring,spring-mvc,annotations,Java,Spring,Spring Mvc,Annotations,我有这样一个场景: 我向用户显示资产列表。 用户选择一项资产,然后单击“添加项目” 在我的requestmapping上,在GET操作期间。我使用服务类检查数据库中是否仍然存在此资产 如果没有,则应通过消息通知用户。我使用表单:error标签 我的问题是,在方法签名中添加错误对象时,出现以下错误: 在没有前面的模型属性的情况下声明了错误/BindingResult参数 代码: SpringMVC需要将一系列错误与模型上的某些对象相关联,因此标记(如)将根据路径属性对应于模型对象。在本例中,它通过

我有这样一个场景:

我向用户显示资产列表。 用户选择一项资产,然后单击“添加项目” 在我的requestmapping上,在GET操作期间。我使用服务类检查数据库中是否仍然存在此资产 如果没有,则应通过消息通知用户。我使用表单:error标签 我的问题是,在方法签名中添加错误对象时,出现以下错误:

在没有前面的模型属性的情况下声明了错误/BindingResult参数

代码:


SpringMVC需要将一系列错误与模型上的某些对象相关联,因此标记(如)将根据路径属性对应于模型对象。在本例中,它通过直接在控制器方法中的ModelMap参数之后查找Errors参数来实现

尝试交换error和model方法参数,看看它是否清除了在前面没有模型属性error的情况下声明的Errors/BindingResult参数

更改此项:

public String setupForm(@RequestParam("assetID") Long assetID,
        @ModelAttribute("assetItemDetail") AssetItemVo voAssetData, Errors error,
        ModelMap model) 
为此:

public String setupForm(@RequestParam("assetID") Long assetID,
        @ModelAttribute("assetItemDetail") AssetItemVo voAssetData, ModelMap model,
        Errors error) 

如果要将BindingResult与方法签名中不存在的模型属性关联,可以手动执行此操作:

BindingResult result = new Errors();
...
model.put(BindingResult.MODEL_KEY_PREFIX + "assetItemDetail", result); 
model.put("assetItemDetail", voAsset); 
public String setupForm(@RequestParam("assetID") Long assetID,
        @ModelAttribute("assetItemDetail") AssetItemVo voAssetData, Errors error,
        ModelMap model) 
public String setupForm(@RequestParam("assetID") Long assetID,
        @ModelAttribute("assetItemDetail") AssetItemVo voAssetData, ModelMap model,
        Errors error) 
BindingResult result = new Errors();
...
model.put(BindingResult.MODEL_KEY_PREFIX + "assetItemDetail", result); 
model.put("assetItemDetail", voAsset);