如果存在@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
本身。
答案 0 :(得分:2)
将方法签名更改为:
public String create(@Valid Game game, BindingResult bindingResult, MultipartFile[] screenshotFiles)
验证结果参数应放在要验证的参数之后。
从春季参考文献documentation:
数据绑定可能导致错误。默认情况下,引发
的旁边添加一个BindException
。但是,要检查控制器方法中的此类错误,可以在BindingResult
@ModelAttribute
自变量