SpringBoot入参验证数据
添加依赖
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.15.Final</version>
</dependency>
在入参实体中添加校验注解
@Data
public class User {
@NotBlank(message = "证件号码不能为空")
private String idcard;
@NotBlank(message = "用户名不能为空")
private String username;
@Email(message = "邮箱地址错误")
private String email;
private String city;
}
在控制层的参数接收加上校验注解 @Valid
@PostMapping("/validatoruser")
public String testUserValidator(@Valid @RequestBody User user, BindingResult bindingResult){
if(bindingResult.hasErrors()){
List<ObjectError> allErrors = bindingResult.getAllErrors();
String err_s = "";
for (ObjectError o:allErrors) {
err_s += o.getDefaultMessage()+"、";
}
if(err_s.length()>0){
err_s = err_s.substring(0,err_s.length()-1);
}
return err_s;
}
return "验证成功";
}
编写自定义校验注解
创建校验规则类
public class CustomConstraintValidator implements ConstraintValidator<CustomConstraint, String> {
@Override
public void initialize(CustomConstraint constraintAnnotation) {
}
@Override
public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
if("北京".equals(s) || "上海".equals(s)){
return true;
}
return false;
}
}
创建元注解
@Target({ElementType.FIELD})//表示注解的作用范围
@Retention(RetentionPolicy.RUNTIME)//表示元注解的生命周期
@Constraint(validatedBy = CustomConstraintValidator.class)
public @interface CustomConstraint {
String message() default "请输入上海或北京";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
在字段需校验的字段上添加注解 @CustomConstraint
@Data
public class User {
@NotBlank(message = "证件号码不能为空")
private String idcard;
@NotBlank(message = "用户名不能为空")
private String username;
@Email(message = "邮箱地址错误")
private String email;
@CustomConstraint
private String city;
}