Jersey/JAX-RS : How to cascade beans-validation recursively with @Valid automatically?
Actually, according to the specification, adding @Valid is exactly for this usecase. From the JSR 303 specification:
In addition to supporting instance validation, validation of graphs of object is also supported. The result of a graph validation is returned as a unified set of constraint violations. Consider the situation where bean X contains a field of type Y. By annotating field Y with the @Valid annotation, the Validator will validate Y (and its properties) when X is validated.
...
The @Valid annotation is applied recursively
![Admin](/assets/logo_square_200-5d0d61d6853298bd2a4fe063103715b4daf2819fc21225efa21dfb93e61952ea.png)
Admin
Updated on June 08, 2022Comments
-
Admin about 2 years
I am validating my POJOs in a REST resource endpoint in Jersey:
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; ... }
This seems to work fine.
However, the
@Min(0)
annotation is only verified if the fieldinner
has the@Valid
annotation. It doesn't feel right to add the@Valid
annotation to each field which isn't a primitive.Is there a way to tell the bean validator to automatically recursively continue the validation, even when no
@Valid
annotation is present? I would like myPOJO
to be as following:public class POJO { @NotNull protected final String name; @NotNull protected final POJOInner inner; ... }