Im Frühjahr erhalten wir nach der Validierung ein BindingResult
-Objekt in controller
.
Einfach genug, wenn ich Validierungsfehler bekomme, möchte ich mein Formular mit der Fehlermeldung über jedem betroffenen Feld erneut anzeigen.
Um nach Feldfehlern im Feld username
meiner FormObject
zu suchen, rufe ich:
Großartig, jetzt habe ich ein FieldError
-Objekt, das, vorausgesetzt, ich benutze DefaultMessageCodeResolver
, jetzt so etwas wie 4 mögliche Fehlercodes enthält.
Wie gehe ich von FieldError
- & gt; Eine Zeichenfolge, die für den Benutzer verbraucht werden kann?
Ich habe eine MessageSource
in meinem Webapplikationskontext definiert, so dass ich einer Nachricht einen einzelnen Fehlercode zuordnen kann.
Aber manchmal ist die Standardnachricht am besten, und manchmal erwarte ich, dass zwei der Fehlercodes eine relevante Nachricht haben, also müssen wir die beste auswählen.
Welche Methode verwende ich, um die beste mögliche Fehlermeldung für einen Feldfehler zu ermitteln?
FieldError
ist selbst ein MessageSourceResolvable
. Sie müssen nicht die Codes davon abholen, dann nehmen Sie einzelne Codes manuell zu Ihrer Nachrichtenquelle und gehen Sie suchen. Sie können es einfach an Ihre MessageSource
übergeben und es wird die spezifischste gefunden, für die in Ihrem Gebietsschema eine Übersetzung definiert ist. (Angenommen, Ihr Code-Resolver fügt sie in der richtigen Reihenfolge an.)
Das müssen Sie in den meisten Fällen nicht einmal tun. Das Errors
auf Ihr Backing-Objekt zu setzen und sie selbst zu übersetzen, wird normalerweise nicht benötigt. Der Namespace form
in der JSP-Bibliothek stellt ein Tag bereit, das Fehlermeldungen für Sie anzeigt. Alles, was Sie tun müssen, ist Errors
in ModelMap
zu setzen. Siehe Dokumentation:
Tags und Links java spring-mvc validation