@NotBlank为Hibernate Validator 常用注解用法 一般与@RequestBody @Valid 联合使用
- @Null 被注释的元素必须为 null
- @NotNull 被注释的元素必须不为 null
- @AssertTrue 被注释的元素必须为 true
- @AssertFalse 被注释的元素必须为 false
- @Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
- @Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
- @DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
- @DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
- @Size(max=, min=) 被注释的元素的大小必须在指定的范围内
- @Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
- @Past 被注释的元素必须是一个过去的日期
- @Future 被注释的元素必须是一个将来的日期
- @Pattern(regex=,flag=) 被注释的元素必须符合指定的正则表达式
- @NotBlank(message =) 验证字符串非null,且长度必须大于 @Email 被注释的元素必须是电子邮箱地址
- @Length(min=,max=) 被注释的字符串的大小必须在指定的范围内
- @NotEmpty 被注释的字符串的必须非空
- @Range(min=,max=,message=) 被注释的元素必须在合适的范围内
- @NotBlank 被注释的字符串的必须非空
- @URL(protocol=,host=, port=,regexp=, flags=) 被注释的字符串必须是一个有效的url
- @CreditCardNumber 被注释的字符串必须通过Luhn校验算法,银行卡,信用卡等号码一般都用Luhn计算合法性
————————————————
原文链接:https://blog.csdn.net/qq_37101384/article/details/10082137 - 校验一个字段必须是合法的身份证号码
-
首先定义一个校验注解
/**
* 身份证校验
*/
@Target({ ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = IdentityConstraintValidator.class)//用哪个校验器校验
public @interface IdentityNo {
String message() default "身份证号码不符合规则";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}
校验逻辑,我们只需要去实现 ConstraintValidator 这个接口重写 isValid 方法即可
/**
* 身份证约束逻辑判断
*/
public class IdentityConstraintValidator implements ConstraintValidator<IdentityNo, String> {
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
return check(value);//返回身份证号码是否符合规则(自己实现校验逻辑)
}
}
这样一来,我们自己的注解就定义好了,把它用在需要验证的字段上就可以了。
@Data
public class OrderRequest {
//自己定义的注解
@IdentityNo
private String merchantCode;
private String memberCode;
}
测试结果:
{
"path": "/order/submit",
"error": "Bad Request",
"message": "merchantCode:身份证号码不符合规则",
"status": 400
}
hibernate-validator 配合统一异常处理简直是完美呀,这样绝大多数问题在前端传参的时候就能暴露出来了~~