我想知道在注释中传递静态灵活元数据的可能性,如果需要新的元数据,则无需修改它们。
在我的用例中,我使用 BeanValidation 注释,因此我无法修改 BeanValidation 注释。
但是 BeanValidation 在每个类中都提供了一个字段:
Class<? extends Payload>[] payload() default {};
在某些示例中,此有效负载似乎用于提供一种灵活的方式来传递该元数据。但在示例中,此元数据通常“不灵活”,例如有效负载是日志级别的严重性:博客文章。
当我验证 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;
}
它工作正常,但我想知道是否没有比在附加类有效负载上使用注释更简单的方法。
任何想法?