0
点赞
收藏
分享

微信扫一扫

自定义校验函数

做个橙梦 2022-03-15 阅读 104
/**
 *
 * @author
 * @apiNote 自定义日期正则表达式校验
 *
 */
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(
        validatedBy = {PatternDateValidator.class}
)
public @interface PatternDate {
    String regexp();
    Pattern.Flag[] flags() default {};
    String message() default "时间格式不正确";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class PatternDateValidator implements ConstraintValidator<PatternDate, String> {
    private String regexp;

    @Override
    public void initialize(PatternDate constraintAnnotation) {
        this.regexp = constraintAnnotation.regexp();
    }

    @Override
    public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
        SimpleDateFormat formatter = new SimpleDateFormat(regexp);
        try {
            Date date = formatter.parse(s);
            if (s.length() - formatter.format(date).length()  > 0) return false;
        } catch (ParseException e) {
            return false;
        }
        return true;
    }
}
举报

相关推荐

0 条评论