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

标签 java spring validation spring-mvc

如果存在 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 a BindingResult argument immediately next to the @ModelAttribute

关于java - 如果使用 MultipartFile,则有效注释不适用于对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54250278/

相关文章:

javascript - 如何使用 javascript 中的多个函数来验证表单

java - 将字符串中的正则表达式模式替换为取决于匹配的替换字符串

java - 源服务器未找到目标资源的当前表示或不愿透露存在的表示

java - Spring 数据库负载测试 : How to release connections

spring - 如何检查一个 REDIS 服务器可以给客户端的总 redis 连接数?

javascript - 如何检查 jQuery 验证引擎是否附加到表单?

java - Spring MVC : HTTP Status 404 -/SimpleMVC/WEB_INF/HelloPage. jsp

java - SQLNonTransientConnectionException : Address already in use

spring - Spring 和 Velocity 的 i18n(国际化)问题

java - 如何提高 Java 中针对 xsd 的大型 xml 验证速度?