我一直在尝试使用 java.util.Date 类验证date属性,以作为 javax.validation 批注的方式。
我找到了一些注释可以做到这一点,例如: @ Past,@ PastOrPresent,@ Future,@ FutureOrPresent ;但是我需要验证的日期是特定的。
我正在搜索如下内容:
@Future("01/01/2019")
有人知道我该怎么做吗?我想用现有的注释来做(我不喜欢用自定义注释)。
致谢。
答案 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")