Ich verwende den Hibernate Validator für eine Anforderung von mir. Ich möchte eine JavaBean validieren, wo Eigenschaften mehrere Validierungsprüfungen haben können. Zum Beispiel:
%Vor%Aber wenn diese Eigenschaft die Validierung nicht besteht, möchte ich einen bestimmten Fehlercode mit der ConstraintViolation verknüpfen, unabhängig davon, ob er wegen @Required oder @Length fehlgeschlagen ist, obwohl ich die Fehlermeldung beibehalten möchte.
%Vor%Etwas wie das obige wäre gut, aber es muss nicht genau so strukturiert sein. Ich kann keine Möglichkeit sehen, dies mit Hibernate Validator zu tun. Ist es möglich?
Sie könnten eine benutzerdefinierte Annotation erstellen, um das gesuchte Verhalten zu erhalten. Anschließend können Sie den Wert der Annotation durch Validierung und Verwendung der Reflektion extrahieren. Etwas wie das Folgende:
%Vor%In deiner Bohne:
%Vor%Beim Überprüfen Ihrer Bean:
%Vor%Nachdem ich gesagt habe, dass ich wahrscheinlich die Anforderungen für Fehlercodes für diese Art von Nachrichten in Frage stellen würde.
Aus dem Abschnitt 4.2. ConstraintViolation der Spezifikation:
Die Methode
getMessageTemplate
gibt die nicht interpolierte Fehlermeldung zurück (normalerweise das Attributmessage
in der Constraint-Deklaration). Frameworks können dies als Fehlercodeschlüssel verwenden.
Ich denke, das ist Ihre beste Option.
Was ich versuchen würde, ist dieses Verhalten auf der DAO-Ebene der Anwendung zu isolieren.
Mit Ihrem Beispiel hätten wir:
%Vor%Und die folgende Ausnahmeklasse:
%Vor%Sie könnten einige Annotationsinformationen basierend auf der Eigenschaft hinzufügen, die nicht von hier validiert wurde, aber immer mit der DAO-Methode.
Ich hoffe, das hat geholfen.
Tags und Links java validation hibernate-validator