Javax.validation-如何使用指定的日期验证Date属性

时间:2019-10-31 16:51:15

标签: java spring validation

我一直在尝试使用 java.util.Date 类验证date属性,以作为 javax.validation 批注的方式。

我找到了一些注释可以做到这一点,例如: @ Past,@ PastOrPresent,@ Future,@ FutureOrPresent ;但是我需要验证的日期是特定的。

我正在搜索如下内容:

@Future("01/01/2019")

有人知道我该怎么做吗?我想用现有的注释来做(我不喜欢用自定义注释)。

致谢。

1 个答案:

答案 0 :(得分:1)

我能够通过这种方式创建注释:

FutureCustom 批注

接口:

@Target({FIELD, PARAMETER})
@Retention(RUNTIME)
@Constraint(validatedBy = FutureCustom.class)
public @interface FutureCustom {
    public abstract String max() default "";
    public abstract String message() default "Message";
    public abstract Class<?>[] groups() default {};
    public abstract Class<? extends Payload>[] payload() default {};
}

班级:

public class FutureCustomImpl  implements ConstraintValidator<FutureCustom, Date> {

    private String max;

    @Override
    public void initialize(FutureCustom constraintAnnotation) {
        this.max = constraintAnnotation.max();
    }

    @Override
    public boolean isValid(Date value, ConstraintValidatorContext context) {
        //Validation using value and max like parameter in annotation
            // The max attribute will always be a String, you have to convert it to Date.
    }

}

通过这种方式,注释将为:

@FutureCustom(max="10/10/2010")