HibernateValidator自定义注解校验手机号

1,336 阅读1分钟

1.自定义注解@IsMobile

@Documented
@Constraint(
        validatedBy = ValidateMobile.class   //校验类
)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
public @interface IsMoblie {

    String message() default "手机号错误";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}

2.校验类实现 ConstraintValidator

public class ValidateMobile implements ConstraintValidator<IsMoblie,String> {
    @Override
    public void initialize(IsMoblie constraintAnnotation) {

    }

    /**
     * 校验手机号
     * @param s 传入参数
     * @param constraintValidatorContext
     * @return
     */
    @Override
    public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
        if (StrUtil.isNotBlank(s)) {
            return PhoneUtil.isMobile(s);  //hutool工具类
        } else {
            return false;
        }
    }
}

除了校验手机号之外,可以自行扩展,比如身份证,年龄.............