JSR 303 - Composizione Vincolo
-
12-10-2019 - |
Domanda
Come faccio a eseguire un ConstraintValidator
all'interno di un ConstraintValidator
?
ho un @NotEmpty
personalizzato e hanno un ConstraintValidator
personalizzato è per ogni tipo, e funziona benissimo.
Ora voglio creare un vincolo a livello di classe che i controlli almeno uno dei campi specificati non è vuota utilizzando quelli ConstraintValidator
personalizzato di ho già fatto. La parte vincolo (@ClassNotEmpty
) è fatto, ma il problema è l'implementazione ConstraintValidator
. Come posso ottenere un'istanza ConstraintValidator
per un dato vincolo? cioè.
isValid(Object value, ConstraintValidatorContext constraintValidatorContext) {
String[] fieldValues = getFieldValues(value, this.classNotEmpty.fieldNames());
for (String fieldValue : fieldValues) {
<What do I put here?>.isValid(fieldValue, constraintValidatorContext);
}
}
C'è un modo per farlo senza tirare la routine di convalida per una classe di supporto?
A proposito, sto usando la primavera e Hibernate Validator.
Soluzione
Dopo ulteriori ricerche, sembra che non v'è alcuna soluzione nota per ottenere un'istanza ConstraintValidator
per un dato vincolo, portatile o no. Una classe di supporto sembra essere l'unico modo per farlo.
Altri suggerimenti
Non ho informazioni di fronte a me, ma mi ricordo di aver letto qualcosa su di validatori che sono composti da altri validatori. Quindi, se si hanno due validatori A e B. È possibile definire una terza 'C' che è composto da altri due. Caccia al tesoro nei doco, si dovrebbe trovare.
Appena fatto una ricerca, leggere questo: http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html/validator-customconstraints.html#validator-customconstraints-compound
Può essere quello che stai cercando.