Spring: Wie man einen Validierungsfehler auflöst - Fehlercode - Fehlermeldung

8

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:

%Vor%

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?

  • Muss ich einen Algorithmus schreiben, um alle Fehlercodes zu durchlaufen und aus den spezifischsten auszuwählen?
  • Bietet der Frühling Unterstützung bei der Ermittlung der spezifischsten Fehlermeldung?
  • Dieser ganze Prozess scheint so lang und verworren, ich dachte, der Frühling sollte das Zeug leicht machen. Vielleicht bin ich irgendwie völlig verrückt?
David Parks 17.11.2010, 07:50
quelle

1 Antwort

15
Du bist es, wie du vermutet hast, dass es dir schwerer fällt, als es sein muss. Das Objekt 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:

Ссылка

    
Affe 17.11.2010, 08:08
quelle

Tags und Links