自定义校验
- 创建校验注解(FlagValue)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(
validatedBy = { FlagValueConstraintValidator.class }
)
public @interface FlagValue {
String message() default "{com.rock.common.valid.FlagValue.message}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
int[] values() default {};
}
- 使用自定义效验注解(BrandEntity)
@FlagValue(values = {1,0}, groups = {AddGroup.class})
private Integer showStatus;
- 创建校验器(FlagValueConstraintValidator)
public class FlagValueConstraintValidator implements ConstraintValidator<FlagValue, Integer> {
private Set<Integer> set = new HashSet<>();
@Override
public void initialize(FlagValue constraintAnnotation) {
int[] values = constraintAnnotation.values();
if(values.length != 0){
for (int value : values) {
set.add(value);
}
}
}
@Override
public boolean isValid(Integer value, ConstraintValidatorContext constraintValidatorContext) {
return set.contains(value);
}
}