2016-06-16 13 views
1

Ich habe eine Klasse, die so etwas wie diesesValidieren Felder eines Typs, bevor Sie eine benutzerdefinierte Einschränkung Validator es die Anwendung

@MyValidator 
class Demo { 
    @NotNull 
    Instant startDate 
    ... 
} 

Im ConstraintValidator für die MyValidator Einschränkung ist, mache ich einen Anruf, der startdate erfordert nicht zu sein Null.

Ich müsste mir darüber keine Sorgen machen, wenn die @NotNull-Einschränkung für startDate validiert wird, bevor meine @MyValidator-Einschränkung ist, aber in meinen Tests wird @MyValidator zuerst validiert und ich erhalte eine NPE. Wie kann ich dem Validator, der ConstraintValidator aufruft, entweder anzeigen, dass die @MyValidator-Einschränkung validiert werden soll, nachdem die @NotNull-Einschränkung auf Feldebene definiert wurde, oder explizit die @NotNull-Einschränkung selbst als ersten Schritt in meiner ConstraintValidator-Implementierung validieren?

Antwort

2

Sie können die Validierungsreihenfolge mithilfe von Validierungsgruppen und Gruppensequenzen steuern. Info: Gruppensequenz stoppt die Validierung, wenn eine der in einer Gruppensequenz definierten Gruppen fehlschlägt.

http://beanvalidation.org/1.1/spec/#constraintdeclarationvalidationprocess-groupsequence

Wenn Sie Hibernate Validator verwenden, können Sie diesen Link helfen: https://docs.jboss.org/hibernate/validator/5.1/reference/en-US/html/chapter-groups.html

Verwandte Themen