自定义注解校验API参数电话号

    技术2022-07-15  81

    注解

    在创建注解之前,我们首先明确电话号码校验逻辑,要实现:

    手机号码不能为空符合手机号的正则表达式电话号码的长度校验

    创建接口

    @Documented @Constraint(validatedBy = PhoneNumberValidator.class) @Target({ElementType.FIELD, ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) public @interface PhoneNumber { String message() default "Invalid phone number"; Class<?>[] groups() default { }; Class<? extends Payload>[] payload() default { }; }

    逻辑实现

    public class PhoneNumberValidator implements ConstraintValidator<PhoneNumber, String> { /** * Implements the validation logic. * The state of {@code value} must not be altered. * <p> * This method can be accessed concurrently, thread-safety must be ensured * by the implementation. * * @param value object to validate * @param context context in which the constraint is evaluated * * @return {@code false} if {@code value} does not pass the constraint */ @Override public boolean isValid(String phoneField, ConstraintValidatorContext context) { // can be null if (phoneField == null) return true; return phoneField != null && phoneField.matches("[0-9]+") && (phoneField.length() > 8) && (phoneField.length() < 14); } }

     

     

    Processed: 0.014, SQL: 9