我知道存在注释@Future。

如果我使用此注释来注释字段

@Future
private Date date;

日期必须是当前时刻之后的将来日期。

现在,我需要确认该日期至少是当前时间之后的24小时。
我该怎么做?

最佳答案

AfterTomorrow.java:

@Target({ FIELD, METHOD, PARAMETER })
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = AfterTomorrowValidator.class)
@Documented
public @interface AfterTomorrow {
    String message() default "{AfterTomorrow.message}";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}

AfterTomorrowValidator.java:
public class AfterTomorrowValidator
             implements ConstraintValidator<AfterTomorrow, Date> {
    public final void initialize(final AfterTomorrow annotation) {}

    public final boolean isValid(final Date value,
                                 final ConstraintValidatorContext context) {
        Calendar c = Calendar.getInstance();
        c.setTime(value);
        c.add(Calendar.DATE, 1);
        return value.after(c.getTime());
    }
}

此外,您可以在AfterTomorrow.message中添加默认的ValidationMessages.properties消息

最后,注释您的字段:
@AfterTomorrow
private Date date;

09-26 21:39