一、问题简介
本案例中用的是SpringBoot框架,@NotNull使用在实体类中的成员变量中,实体类对象作为控制器的参数。启动应用,未报错,但参数校验未生效。
二、代码实例
1、实体类:(已在参数上用@NotNull进行注解)
@Data
public class ChangeDTO implements Serializable {
/**
* ID
*/
@NotNull(message = "binId不能够为空", groups = {OnCreate.class})
private String bindId;
/**
* A号码
*/
@NotNull(message = "号码不能够为空", groups = {OnCreate.class})
private String callNumA;
/***
* B号码
*/
@NotNull(message = "号码不能够为空", groups = {OnCreate.class})
private String callNumB;
}
2、 控制器:(类上和方法体外均已用@Validated进行注解,且需校验的参数已用@Valid进行注解)
@RestController
@Validated
@RequestMapping("/")
public class ChangeBindController {
@ResponseBody
@RequestMapping(value ="/changeAXB", method = RequestMethod.POST)
@Validated(OnUpdate.class)
public Result<Object> changeBinding(@Valid @RequestBody ChangeDTO changeDTO) {
...
return new Result;
}
}
二、解决方案:原来pom.xml文件里面注入的依赖是8.0.0.Final版本,更改为6.2.4.Final版本即可,更改后的依赖如下:
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.2.4.Final</version>
</dependency>