1. 定义枚举类
@AllArgsConstructor
@Getter
public enum DimDateEnum {
YEARS, MONTHS, DAYS;
@Override
public String toString() {
return this.name();
}
public static boolean isValidDimDate(final String code) {
for (DimDateEnum item : values()) {
if (item.name().equals(code)) {
return true;
}
}
return false;
}
}
2.定义时间维度校验注解
@Constraint(validatedBy = CheckDimDateValidator.class)表示,加上这个注解的字段由CheckDimDateValidator进行校验
@Target({ElementType.FIELD, ElementType.METHOD,ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = CheckDimDateValidator.class)
public @interface CheckDimDate {
String message() default "";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
3.定义检验器
<CheckDimDate, String> 表示校验类型和属性类型
public class CheckDimDateValidator implements ConstraintValidator<CheckDimDate, String> {
@Override
public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
return StringUtils.isNotBlank(s) && DimDateEnum.isValidDimDate(s);
}
}
4.用法:在字段上加检验注解
@NotNull(message = "时间维度不能为空")
@CheckDimDate(message = "时间维度为YEARS|MONTHS|DAYS")
private String dimDate;