Ho una classe bean con più vincoli interni (personalizzati) e un vincolo a livello di classe. Mi piacerebbe convalidare i vincoli interni prima del vincolo a livello di classe. Il codice è simile al seguente:Convalida Java Bean: GroupSequence con un vincolo a livello di classe
@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
è solo un'interfaccia vuota in giro da qualche parte).
Tuttavia, quando provo a eseguire questo, il vincolo a livello di classe non viene convalidato affatto. Quando cerco di definire il GroupSequence come
@GroupSequence({ Inner.class, Outer.class })
(con Outer
essere un interfaccia casuale), ottengo l'eccezione:
javax.validation.GroupDefinitionException: ...*.beans.NewSlotBean must be part of the redefined default group sequence.
Fa s/o sapere come fare in modo che il livello di classe il vincolo è convalidato dopo quelli interiori? (!. Questo sembra non essere il default Ho avuto problemi casuali con esso popping up dopo un po ')
Solo un suggerimento per migliorare una risposta eccellente: è probabilmente meglio per raggruppare le convalide il contrario: '@GroupSequence ({NewSlotBean.class, ClassLevel.class}) @TotalBeanValid (gruppi = ClassLevel.class) 'sulla classe' NewSlotBean' e quindi rimuovere il gruppo di convalida 'InnerGroup' e le assegnazioni del gruppo a livello di campo - le convalide dei campi vengono assegnate automaticamente al gruppo di convalida predefinito. Meno codice, più pulito. – jannis