在Java注释中传递灵活数据(例如:BeanValidation Payload)

时间:2013-06-20 10:23:48

标签: java annotations bean-validation

我想知道哪些是在注释中传递静态灵活元数据的可能性,而不需要在需要新元数据时修改它们。

在我的用例中,我使用BeanValidation注释,因此无法修改BeanValidation注释。

但BeanValidation在每个类中都提供了一个字段:

Class<? extends Payload>[] payload() default {};

在某些示例中,此Payload似乎用于提供传递该元数据的灵活方式。但在示例中,此元数据通常“不灵活”,例如,有效负载是日志级别严重性:blog article


当我验证REST API输入方法时。我必须能够在验证错误上“自定义”JSON有效负载。我们有一个默认机制,可以从ConstraintViolations创建一个错误的JSON有效负载,但有时需要重写它。

我已完成以下代码:

@Data
@GreaterThan(field = "endDate", greaterThan = "startDate", strict = false, payload = EndDateMustBeGreaterThanStartDatePayload.class)
public class SomeBean {

  @Field("end_date")
  @ErrorDescription("The end date must be greater than the start date")
  public static final class EndDateMustBeGreaterThanStartDatePayload implements ApiResponseOverridePayload { };


  @NotNull
  private DateTime startDate;

  @NotNull
  @Future
  private DateTime endDate;

}

它工作正常,但我想知道是否有一种比在额外的Class Payload上使用注释更简单的方法。

有什么想法吗?

0 个答案:

没有答案