//@Target内容根据自己的需求定义
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(
validatedBy = {}
)
public @interface ValidCardNumber {
String message() default "{javax.validation.constraints.NotNull.message}";
}
//合法逻辑编写
public class ValidCardNumberConstraintValidator implements ConstraintValidator<ValidCardNumber,String> {
@Override
public void initialize(ValidCardNumber constraintAnnotation) {
}
//合法判断逻辑
@Override
public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
String[] parts=StringUtils.delimitedListToStringArray(s,"-");
if (parts.length!=2){
return false;
}
String prefix=parts[0];
String surfix=parts[1];
// boolean isValidPrefix = "xiaomai".equals(prefix);
boolean isValidPrefix = Objects.equals(prefix,"xiaomai");
boolean isValidInteger = org.apache.commons.lang3.StringUtils.isNumeric(surfix);
return false;
}
JSR提供的校验注解: @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=) 被注释的元素必须符合指定的正则表达式