JSR 303 - Zusammensetzung Constraint
-
12-10-2019 - |
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.
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.