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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top