javax.validation 自定義校驗註解

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
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章