2012-01-12 11 views
5

Desidero applicare alcune annotazioni @NotBlank solo se un altro campo è falso. Sul mio attuale progetto dobbiamo usare il validatore di ibernazione, quindi nessuna validazione di comunita '+ valang disponibile per risolvere questo problema.Hibernate validator - applica condizionalmente il validatore

Dal momento che non sono troppo appassionato di creare più annotazioni personalizzate solo per risolvere ciò che dovrebbe essere una cosa facile (un po 'deprimente che questo non fa parte delle specifiche JSR-303) mi stavo chiedendo se qualcuno conoscesse un modo accettabile per realizzare questo. Ho trovato un barattolo che lo ha portato a termine, ma quello era per ibernare 3. E a causa delle modifiche ...

risposta

5

In questo caso, l'approccio suggerito è quello di utilizzare i vincoli a livello di classe invece di Campo o Livello proprietà.

Si prega di riferimento Hibernate Validator Docs

ora è fastidioso. Ho avuto uno scenario come questo e ho provato qualcosa come @NotEmpty (depends = "anotherField") ed è stato un fallimento totale.

Forse alcuni altri membri conoscono un altro modo per farlo, ma per ora, sto facendo ciò che Hibernate Validator dice di fare.

+0

Per essere onesti, a mio parere la mancanza di supporto per uno scenario del genere è uno dei miei dubbi personali con le specifiche JSR-303. E i vincoli di livello di classe sono belli e tutti, ma non ti danno la stessa flessibilità con l'immissione e la personalizzazione dei messaggi di errore. –

+1

D'accordo, ma io sono solo questione di separazione delle preoccupazioni. Le convalide dei campi riguardano specificamente un campo/proprietà (vuoto, nullo, maggiore di X, inferiore a Y). Quelle sono validazioni immutabili che non dovrebbero dipendere da qualsiasi altra parte del sistema. Non ti confonderai mai con quello. Altrimenti, qualcuno potrebbe creare una follia di convalida in un solo campo. – Beccari

+1

@Beccari Se la mia situazione è che se field1 = true convalida l'altro. Diciamo che il mio altro campo è un oggetto di classe, e per ora sto usando solo @Valid su di esso. Se dovessi fare questo se-altrimenti tipo di cosa, dovrò scrivere il meccanismo di validazione per il mio altro campo tutto da solo, giusto? Non posso più usare '@ Valido' – Kraken

Problemi correlati