新しいメタデータが必要な場合にそれらを変更することなく、静的で柔軟なメタデータを注釈に渡す可能性があることを知りたいです。
私のユースケースでは、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;
}
正常に動作しますが、追加のクラス ペイロードでアノテーションを使用するよりも簡単な方法はないのでしょうか。
何か案が?