Spring MVC + Hibernate validator : wie kann ich überschreiben/internationalisieren der Standard-Fehler-Meldungen?
Arbeite ich an einem Spring-MVC-Projekt, in dem ich mit Hibernate Validator zur Validierung der input-Felder aus einem Formular. Da mein Projekt ist Maven-basierte, fügte ich diese Abhängigkeit:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator-annotation-processor</artifactId>
<version>4.1.0.Final</version>
</dependency>
Dem Formular-Validierung funktioniert gut, aber jetzt möchte ich gerne, zu überschreiben oder zu internationalisieren Sie die Standard-Fehlermeldungen.
Beispielsweise standardmäßig mit dem @NotEmpty-annotation wird der Ertrag der Meldung "kann nicht leer sein". Wie kann ich ersetzen, diese Botschaft durch meine eigene Botschaft? Ich habe versucht, mehrere Lösungen:
- Definition einer Spring bean mit der id "messageSource" und die Einstellung seiner "Basisnamen" Eigenschaft
- erstellen ValidationMessages.Eigenschaften Datei im Projekt-Klassenpfad
Aber die Standard-Nachrichten werden immer noch angezeigt...
Irgendeinen Hinweis?
Thx im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, können Sie das tun. Sie können laden Sie die Fehlermeldung aus der properties-Dateien. Aber Sie müssen die Schlüssel in einem richtigen format. Wie
NotEmpty.ClassName.fieldName=fieldName Can not be empty
.Müssen Sie nur geben Sie Ihren genauen Klassennamen und dem Namen der Eigenschaft in Ihrem properties-Dateien. Alles andere schaut einfach nur perfekt in Ihrem Fall.
Können Sie auch eine gemeinsame Fehlermeldung für einen bestimmten Typ von Validierungs-annotation für alle Felder, die mit dieser annotation. Wie
javax.validation.constraints.NotNull=Notnull erro happened!
Hoffe, dies hilft Ihnen. Cheers.
@NotEmpty(message="xyz {use.braces.for.bundle.keys}")
wie Sie Ihre inline Java-code, und führen Sie dannuse.braces.for.bundle.keys=Hey guy, remember to use braces!
als eine Zeile in IhremValidationMessages.properties
- Datei. Das ist schön für ungültige Datumsformate in meiner Meinung a la@Pattern(regexp="\\d{4}-\\d{2}-\\d{2}", message="{Invalid.Date.UseYMDFormat}")
Dies ist ein bisschen Erklärung, wie finden Sie die genaue Eigenschaft name hinter jeder annotation gegeben oder für die Validierung verwendet. Sehen Sie unten genannten Schritte.
Entfernen Sie nun { message = "E-Mail-Größe sollte zwischen 1 und 50" } Validierung-tag.
Tun, nachdem diese Ihre Anmerkung wird wie dieses.
Nun auf controller-Seite Debuggen der Methode wird aufgerufen, wenn das Formular abgesendet hat. Unten ist meine Methode, die die Anforderung empfängt, wenn der Benutzer trifft Einreichen.
Legen Sie nun einen debug-Punkt bei der ersten Zeile der Methode und debug das argument "Ergebnis".
Während dubugging finden Sie einen string in array-codes.
Definieren Sie nun diese Zeichenfolge in Ihrem Eigenschaften-Datei und eine Nachricht vor, dass string. Kompilieren und ausführen. Diese Nachricht wird angezeigt, wenn Sie, dass Anmerkungen würde nicht validiert werden.
Grundsätzlich der Frühling macht seine eigene string als Schlüssel zu seinem Eigentum Datei Nachricht. Im oben genannten Schlüssel
Die Schönheit dieser Methode ist es auch gut läuft, während Sie mit Spring Internationalisierung. Es schaltet automatisch die Nachrichten-Datei, wie Sprache sich ändert.