java - validaciones - Cascado en cascada de validación de beans de forma recursiva, @Valid anotación
validaciones spring mvc (1)
Estoy validando mis POJO en un punto final de recursos REST en 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;
...
}
Esto parece que funciona bien.
Sin embargo, la @Min(0)
solo se verifica si el campo inner
tiene la anotación @Valid
. No se siente bien agregar la anotación @Valid
a cada campo que no es primitivo.
¿Hay alguna manera de decirle al validador del bean que continúe automáticamente la validación recursivamente, incluso cuando no hay @Valid
anotación @Valid
presente? Me gustaría que mi POJO
fuera como sigue:
public class POJO {
@NotNull
protected final String name;
@NotNull
protected final POJOInner inner;
...
}
En realidad, de acuerdo con la especificación, agregar @Valid es exactamente para este caso de uso. De la especificación JSR 303:
Además de admitir la validación de instancias, también se admite la validación de gráficos de objetos. El resultado de una validación de gráfico se devuelve como un conjunto unificado de violaciones de restricciones. Considere la situación en la que el bean X contiene un campo de tipo Y. Al anotar el campo Y con la anotación @Valid, el Validador validará Y (y sus propiedades) cuando se valide X.
...
La anotación @Valid se aplica recursivamente