将来如何参考另一个日期来验证该日期?

How to validate that date in future in reference to another date?

我有以下 bean:

class CampaignBeanDto {

    @Future
    Date startDate;

    Date endDate;

    ...
}

显然我认为 endDate 应该在 startDate 之后。我想验证一下。

我知道我可以手动实现 @FutureAfterDate 的注释,为此验证器并手动初始化阈值日期,但我想使用 @Validated spring mvc 注释。

如何实现?

您将不得不承受并为自己编写一个验证器。

这应该让你开始:

Cross field validation with Hibernate Validator (JSR 303)

您不应使用注释进行跨字段验证,而应编写验证函数。在 this Answer to the Question, Cross field validation with Hibernate Validator (JSR 303).

中解释

例如写一个这样的验证器函数:

public class IncomingData {

  @FutureOrPresent
  private Instant startTime;

  @Future
  private Instant endTime;

  public Boolean validate() {
      return startTime.isBefore(endTime);
  }
}

然后在第一次收到数据时调用验证器函数:

if (Boolean.FALSE.equals(incomingData.validate())) {
  response = ResponseEntity.status(422).body(UNPROCESSABLE);
}