1、依赖选择。
1.1非spring boot项目
依赖选择
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.13.Final</version>
</dependency>
注意单独引用validation-api不生效,需配合hibernate-validator使用,而hibernate-validator已经内嵌jakarta.validation-api所以使用hibernate-validator即可。
<dependency>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
</dependency>
或
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
1.2 spring boot项目
在springboot 2.3之前,spring-boot-starter-web包里面有hibernate-validator包。springboot 2.3之后spring-boot-starter-web包不再包含hibernate-validator包。
<!-- springboot 2.3之后消失的hibernate-validator解决方法-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
2使用
controller的请求参数bean的字段
/**
* id
*/
@NotBlank(message = "用户 id 不可为空。")
private String id;
/**
* 姓名
*/
@NotNull(message = "用户姓名不可为空。")
private String name;
/**
* 年龄
*/
private Integer age;
/**
* 手机
*/
private String phone;
controller中需要判断的bean前需要加@Valid注解。
public ResponseBaseVO getUserList(@Valid UserVo userVo, BindingResult bindingResult){
ResponseBaseVO result = ResponseBaseVO.ok();
if (bindingResult.hasErrors()) {
result.setCode(ResponseBaseVO.ERROR_CODE);
result.setMessage(bindingResult.getFieldError().getDefaultMessage());
}
return result;
}