Mit Spring ist MessageSource für die Einstellung FieldError Standard-Nachrichten
Nachdem meine form backing-Objekt validiert, ich habe eine BindingResult, enthält eine Liste mit FieldError. Jeder FieldError hat eine defaultMessage. Wie wird die Nachricht eingestellt, und warum nicht Sie es verwenden, meine Feder MessageSource? Ich möchte, dass die Standard-Nachricht abgeleitet werden aus meiner Feder MessageSource.
EDIT:
Ich sehe, dass die Fehler-codes sind korrekt eingestellt und in der FieldError Objekt. Es ist nur die Standard-Meldung, dass das Objekt nicht aus meinem MessageSource. Wenn ich zum Beispiel geben Sie einen string für ein Feld ist ein int will ich es, um meine Nachricht von Nachrichten.Eigenschaften:
typeMismatch=Invalid type was entered.
Die einzige Möglichkeit, die ich bekommen kann, die Meldung, ob ich meinen FieldError-Objekt und übergeben es in die MessageSource-manuell und zwar so:
messageSource.getMessage(fieldError, null); //This gets my message from messages.properties.
- Hast du dieses problem gelöst?
- Tut mir Leid, ich kann mich nicht erinnern, was wir am Ende machen auf das Projekt. Leider habe ich keinen Zugriff mehr auf den Quellcode für dieses Projekt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie einen Validator, können Sie die Schlüssel für die Nachrichten in der MessageSource der Validator-Implementierung der Klasse, in der Regel mit ValidationUtils Methoden. Abschnitt 6.2 der Spring-Dokumentation hat ein gutes Beispiel.
Frühjahr wird auch versuchen, Behebung Fehler-codes durch Konvention, wenn Sie sich mit etwas anderem als einem Validator wie JSR-303 Bean-Validierung.
Lassen Sie uns sagen, Sie hätten ein Formular backing-Objekt mit dem Namen 'Adresse' mit einem int-Feld namens " PLZ.' Wenn der Benutzer eingetragen, der für die Postleitzahl-Feld, standardmäßig wird der Frühling verwenden Sie die DefaultMessageCodesResolver und Blick in die MessageSource-für einen Schlüssel namens 'typeMismatch.Adresse.PLZ.' Wenn Sie nicht finden, die Taste, wird es versuchen 'typeMismatch.PLZ,' dann 'typeMismatch.int,' dann 'typeMismatch.'
Oder implementieren Sie Ihre eigene MessageCodesResolver.