如果使用MultipartFile,则有效注释不适用于对象

时间:2019-01-18 08:43:09

标签: java spring validation spring-mvc

如果存在@Valid,为什么MultipartFile注释不适用于我的域模型?我的控制器中包含以下代码:

@PostMapping("/create")
public String create(@Valid Game game, MultipartFile[] screenshotFiles, BindingResult bindingResult) {
    if (bindingResult.hasErrors()) {
        return "game/create";
    }
     // others lines removed for brevity
}

我在方法签名和bindingResult.hasErrors中都放置了要调试的断点,但是我无法调试它。提交后立即到达if (bindingResult.hasErrors()),但显示以下内容的Whitelabel Error Page很快:

Validation failed for object='game'. Error count: 1

如果不包含MultipartFile,则可以正常工作。需要明确的是,我不是在验证MultipartFile对象,而是在验证Game对象。我看到了一些看起来与此类似的问题,但它们正在验证MultipartFile本身。

1 个答案:

答案 0 :(得分:2)

将方法签名更改为:

public String create(@Valid Game game, BindingResult bindingResult, MultipartFile[] screenshotFiles)

验证结果参数应放在要验证的参数之后。

从春季参考文献documentation

  

数据绑定可能导致错误。默认情况下,引发BindException。但是,要检查控制器方法中的此类错误,可以在BindingResult

的旁边添加一个@ModelAttribute自变量