Tengo una clase de bean con múltiples restricciones internas (personalizadas) y una restricción de nivel de clase. Me gustaría validar las restricciones internas antes de la restricción de nivel de clase. El código es el siguiente:Validación de Java Bean: GroupSequence con restricción de nivel de clase
@GroupSequence({ Inner.class, NewSlotBean.class })
@TotalBeanValid(groups = NewSlotBean.class)
public class NewSlotBean {
@DayMonthYearString(groups = Inner.class)
private String slotDay;
@TimeString(groups = Inner.class)
private String slotBegin;
@LengthString(groups = Inner.class)
private String slotLength;
}
(Inner
es sólo una interfaz vacía ahí en alguna parte).
Sin embargo, cuando intento ejecutar esto, la restricción de nivel de clase no se valida en absoluto. Cuando trato de definir el GroupSequence como
@GroupSequence({ Inner.class, Outer.class })
(con Outer
ser una interfaz de azar), consigo la excepción:
javax.validation.GroupDefinitionException: ...*.beans.NewSlotBean must be part of the redefined default group sequence.
¿Tiene s/o conocer cómo asegurarse de que el nivel de clase la restricción se valida después de las internas? (!. Este no parece ser el valor por defecto que he tenido problemas con él al azar a aparecer después de un tiempo)
Sólo una sugerencia de mejora a una excelente respuesta: es probablemente mejor para agrupar las validaciones al revés: '@GroupSequence ({NewSlotBean.class, ClassLevel.class}) @TotalBeanValid (grupos) = ClassLevel.class 'en la clase' NewSlotBean' y luego eliminar el grupo de validación 'InnerGroup' y las asignaciones de grupo de nivel de campo - las validaciones de campo se asignan automáticamente al grupo de validación predeterminado. Menos código, más limpio. – jannis