Geben Sie den Feldnamen innerhalb der Fehlermeldung mithilfe des Hibernate-Validators ein

9

Ich verwende Hibernate Validator 4.2.0.Final und suche nach dem einfachsten Weg, den Klassenfeldnamen in meine Fehlermeldung aufzunehmen.

Was ich gefunden habe, ist der folgende Thread Verwenden eines benutzerdefinierten ResourceBundle mit Hibernate Validator . Dementsprechend sollte ich meine benutzerdefinierte Annotation für jede Constraint-Annotation erstellen, indem ich jeweils eine Eigenschaft hinzufüge.

Gibt es einen saubereren Weg, dies zu erreichen?

Der folgende Code:

%Vor%

erzeugt einen Standardfehler: size muss zwischen 0 und 5 liegen.

Ich hätte es gerne: myField size muss zwischen 0 und 5 liegen.

Vielen Dank im Voraus.

    
MrKiller21 11.07.2012, 11:14
quelle

6 Antworten

0

Für all diejenigen, die nach einer Möglichkeit suchen, auf den Kurs in Ihrem Validator zuzugreifen. Wenn Sie Annotation im Hibernate auf Klassen- statt auf Variablenebene vornehmen, erhalten Sie Zugriff auf ein Klassenobjekt (vorausgesetzt, Sie haben einen benutzerdefinierten Validator definiert).

%Vor%     
MrKiller21 20.09.2012, 15:34
quelle
17

Sie können den Namen des Felds mit der Methode getPropertyPath() aus dem ConstraintViolation klasse .

Eine gute Standardfehlermeldung kann sein:

%Vor%

Dies gibt Ihnen "foo darf nicht null sein" oder "foo.bar darf nicht null sein" im Falle verschachtelter Objekte.

    
brunov 30.08.2013 14:28
quelle
2

Ich kenne keinen generischen Weg, aber Sie können eine benutzerdefinierte Fehlermeldung definieren und den Feldnamen darin einfügen.

%Vor%     
xyz 11.07.2012 12:34
quelle
0

Verwenden Sie oval , das eine gute Anzahl von Anmerkungen und Möglichkeiten zum Anzeigen von Nachrichten hat.

    
Jigar Parekh 11.07.2012 15:49
quelle
0

Ich gebe jede Feldüberprüfungsnachricht wie folgt in die Eigenschaftendatei ein:

%Vor%

und in der Bean, benutze es so:

%Vor%

Ich weiß, dass es keine perfekte Lösung ist, aber ich finde auch keinen besseren Weg.

    
Rocky Hu 02.04.2015 08:22
quelle
0

Verwenden Sie diese Methode (z. B. ConstraintViolationException-Instanz):

%Vor%     
zui-coding 11.08.2016 08:44
quelle