@Valid加到方法参数上不生效
时间: 2023-10-01 07:05:55 浏览: 94
如果你在方法参数上使用了 `@Valid` 注解,并且没有生效,可能有以下几个原因:
1. 你的方法参数没有被 Spring 管理。如果你使用了 `new` 关键字手动创建参数对象,而没有交给 Spring 管理,那么 `@Valid` 注解将不会生效。你需要将参数对象交给 Spring 管理,可以使用 `@Autowired` 或者 `@Resource` 等注解。
2. 你的方法没有启用参数校验功能。你需要在启动类上添加 `@EnableWebMvc` 或者 `@EnableGlobalMethodSecurity(prePostEnabled = true)` 注解,启用 Spring MVC 或者 Spring Security 的参数校验功能。
3. 你的依赖缺少校验器。Spring Boot 默认使用 Hibernate Validator 作为校验器,如果你的依赖中没有添加该依赖,那么校验器就无法工作。你需要在 `pom.xml` 文件中添加以下依赖:
```
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.2.0.Final</version>
</dependency>
```
4. 你的参数对象没有添加校验注解。你需要在参数对象的属性上添加校验注解,比如 `@NotEmpty`、`@NotNull`、`@Min`、`@Max` 等等。如果没有添加校验注解,`@Valid` 注解也无法生效。
注意:以上解决方案适用于 Spring Boot 2.x 版本。如果你使用的是其他版本的 Spring 或者 Spring Boot,可能会有些许不同。
阅读全文