Frage

Wie führe ich einen ConstraintValidator innerhalb eines ConstraintValidator?

Ich habe eine benutzerdefinierte @NotEmpty und haben eine benutzerdefinierte ConstraintValidator für jeden Typ ist, und es funktioniert gut.

Jetzt möchte ich eine Klasse-Level-Beschränkung zu schaffen, dass die Kontrollen mindestens eine der angegebenen Felder leer ist nicht die benutzerdefinierten ConstraintValidator mit ist Ich habe bereits. Der Beschränkungsteil (@ClassNotEmpty) erfolgt, aber das Problem ist die ConstraintValidator Umsetzung. Wie kann ich eine ConstraintValidator Instanz für eine bestimmte Einschränkung erhalten? d.

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

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

Gibt es eine Möglichkeit, dies zu tun, ohne die Validierung Routine zu einem Hilfsklasse nach oben zu ziehen?

BTW, ich bin mit Spring und Hibernate Validator.

War es hilfreich?

Lösung

Nach weiterer Forschung, scheint es, dass es keine bekannte Lösung ist es, eine ConstraintValidator Instanz für eine bestimmte Einschränkung, tragbar oder nicht zu erhalten. Eine Hilfsklasse scheint der einzige Weg, dies zu tun.

Andere Tipps

Ich habe nicht die Informationen vor mir, aber ich erinnere mich, etwas über Validatoren zu lesen, die von anderen Prüfungen bestehen. Also, wenn Sie zwei Validierer haben A und B. Sie können eine dritte ‚C‘ definieren, die von den anderen beiden zusammengesetzt ist. Jagd durch die doco, sollten Sie es finden.

Sie einfach eine Suche haben, lesen Sie diese: http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html/validator-customconstraints.html#validator-customconstraints-compound

Es kann sein, was Sie suchen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top