版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;
@Target( {ElementType.FIELD, ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = TypeEnumValidator.class)
@Documented
public @interface TypeConstraint {
String message() default "pricing rule type is incorrect";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.Arrays;
public class TypeEnumValidator implements ConstraintValidator<TypeConstraint, Type> {
private String message;
@Override
public void initialize(PriceRuleTypeConstraint annotation) {
message = annotation.message();
}
@Override
public boolean isValid(type value, ConstraintValidatorContext context) {
return Arrays.stream(Type.values()).anyMatch(type -> Type.equals(value));
}
}
public enum Type {
TIME,
DATE,
DATE_TIME
}