如果存在 MultipartFile
,为什么 @Valid
注释不适用于我的域模型?我的 Controller 中有以下代码:
@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 错误页面
:
Validation failed for object='game'. Error count: 1
如果不包含MultipartFile
,它就可以工作。需要明确的是,我不是验证 MultipartFile
而是验证 Game
对象。我看到了一些似乎与此类似的问题,但它们正在验证 MultipartFile
本身。
最佳答案
将方法签名更改为:
public String create(@Valid Game game, BindingResult bindingResult, MultipartFile[] screenshotFiles)
验证结果参数应该在被验证的参数之后。
来自 spring 引用 documentation :
Data binding can result in errors. By default, a
BindException
is raised. However, to check for such errors in the controller method, you can add aBindingResult
argument immediately next to the@ModelAttribute
关于java - 如果使用 MultipartFile,则有效注释不适用于对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54250278/