Question

Comment puis-je exécuter un ConstraintValidator dans un ConstraintValidator?

J'ai un @NotEmpty personnalisé et un ConstraintValidator personnalisé est pour chaque type, et il fonctionne très bien.

Maintenant, je veux créer une contrainte au niveau de la classe qui vérifie au moins l'un des champs spécifiés n'est pas vide en utilisant les ConstraintValidator sur mesure, je l'ai déjà est. La partie de contrainte (de @ClassNotEmpty) est fait, mais le problème est la mise en œuvre de ConstraintValidator. comment puis-je obtenir une instance de ConstraintValidator pour une contrainte donnée? i.e..

isValid(Object value, ConstraintValidatorContext constraintValidatorContext)  {
    String[] fieldValues = getFieldValues(value, this.classNotEmpty.fieldNames());

    for (String fieldValue : fieldValues) {
        <What do I put here?>.isValid(fieldValue, constraintValidatorContext);
    }
}

Est-il possible de le faire sans sortir de la routine de validation à une classe d'aide?

BTW, je suis avec Spring et Hibernate Validator.

Était-ce utile?

La solution

Après d'autres recherches, il semble qu'il n'y a pas de solution connue pour obtenir une instance de ConstraintValidator pour une contrainte donnée, portable ou non. Une classe d'aide semble être la seule façon de le faire.

Autres conseils

Je n'ai pas l'information devant moi, mais je me souviens avoir lu quelque chose sur validateurs qui se composent d'autres validateurs. Donc, si vous avez deux validateurs A et B. Vous pouvez définir un troisième « C » qui se compose des deux autres. Hunt à travers le Doco, vous devriez le trouver.

Juste fait une recherche, lisez ceci: http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html/validator-customconstraints.html#validator-customconstraints-compound

Il peut être ce que vous recherchez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top