RESTジャージーのリソースエンドポイントでPOJOを検証しています:
_public class Resource {
@POST
public Response post(@NotNull @Valid final POJO pojo) {
...
}
}
public class POJO {
@NotNull
protected final String name;
@NotNull
@Valid
protected final POJOInner inner;
...
}
public class POJOInner {
@Min(0)
protected final int limit;
...
}
_
これは正常に動作するようです。
ただし、@Min(0)
アノテーションは、フィールドinner
に_@Valid
_アノテーションがある場合にのみ検証されます。プリミティブではない各フィールドに_@Valid
_アノテーションを追加するのは適切ではありません。
_@Valid
_アノテーションが存在しない場合でも、Beanバリデータに自動的に再帰的に検証を続行するように指示する方法はありますか? POJO
を次のようにしたい:
_public class POJO {
@NotNull
protected final String name;
@NotNull
protected final POJOInner inner;
...
}
_
実際、仕様によると、@ Validを追加することはまさにこのユースケースのためのものです。 JSR 303仕様から:
インスタンス検証のサポートに加えて、オブジェクトのグラフの検証もサポートされています。グラフ検証の結果は、制約違反の統一されたセットとして返されます。 Bean XにタイプYのフィールドが含まれている状況を考えます。フィールドYに@Validアノテーションを付けることにより、Xが検証されるときにValidatorがY(およびそのプロパティ)を検証します。
...
@Validアノテーションは再帰的に適用されます