2015-04-07 11 views
6

Ho più processi in cui le proprietà del bean devono avere valori diversi. Esempio:Convalida bean Java: come si specificano più vincoli di convalida dello stesso tipo ma con gruppi diversi?

@Min(value=0, groups=ProcessA.class) 
@Min(value=20, groups=ProcessB.class) 
private int temperature; 

Purtroppo la convalida di fagioli JSR 303 non ha inserito il @Repeatable su javax.validation.constraints.Min per cui questo approccio non funziona. Ho trovato "Min.List" ma senza alcun documento su come usarlo. Invece i doc stati ufficiali oracolo di http://docs.oracle.com/javaee/7/api/javax/validation/constraints/class-use/Min.List.html

Nessun utilizzo di javax.validation.constraints.Min.List

Quindi al momento questo sembra un errore di specificazione?!?

+0

La documentazione dice anche "definisce diverse annotazioni Min sullo stesso elemento.". Quindi sembra esattamente quello che vuoi fare. Hai provato a usarlo? Qual è la difficoltà? –

+0

javac genera un errore di compilazione: annotazione duplicata di tipo non ripetibile @ Min. Solo i tipi di annotazione contrassegnati con @Repeatable possono essere utilizzati più volte su un target. –

+0

Ecco cosa dice quando si usa '@ Min' due volte, come nel codice che hai postato. Ed è per questo che dovresti usare '@ Min.List', che è documentato come" Definisce diverse annotazioni min sullo stesso elemento ". Cosa succede quando usi '@ Min.List'? –

risposta

7

La sintassi per Min.List, come per qualsiasi altra annotazione prendendo una serie di annotazioni come uno dei suoi attributi, è

@Min.List({ @Min(value = 0, groups = ProcessA.class), 
      @Min(value = 20, groups = ProcessB.class) }) 
+0

Grazie. Questo è tutto. Qualche idea sul perché sia ​​meglio che avere Min più volte? Almeno diminuisce la leggibilità. –

+1

Le annotazioni sono ripetibili da Java 8. La convalida del bean è stata progettata su Java 5 o 6. Quindi questa possibilità non esisteva, quindi la soluzione alternativa di Min.List. Se Bean Validation è stato progettato ora, Min.List probabilmente non esisterebbe. –

+0

Buon punto. Grazie. Farò di questo una richiesta di miglioramento per la convalida del bean. –

Problemi correlati