Zunächst möchte ich erklären, dass ich Spring MVC 3.1.1 und Hibernate-Validierung 4.2.0 verwende. Ich verwende Validierungsannotationen für verschiedene Formulare in meiner Spring-Anwendung. Da meine Anwendung lokalisiert werden muss, habe ich ein Ressourcenbündel für meine Validierungsnachrichten verwendet, das ungefähr so aussieht:
%Vor%Die entsprechende Klassendefinition für diese Nachricht sieht folgendermaßen aus:
%Vor%Ich habe dieses benutzerdefinierte Ressourcenpaket in meiner appContext.xml eingerichtet, und meine Nachrichten werden ohne Probleme im Formular angezeigt.
Hier ist mein Dilemma. Es gibt eine neue Anforderung, dass ich bestätigen muss, dass mehr Felder übereinstimmen. Im Moment bestätige ich nur, dass zwei Passwortfelder übereinstimmen. Jetzt ist meine Anforderung, dass ich E-Mail-Adresse auch bestätigen muss. Ich weiß, das ist eine dumme Forderung, aber ich kann es nicht ändern. Jetzt sieht die Klassendefinition so aus:
%Vor% Offensichtlich funktioniert mein aktuelles Ressourcenbündel nicht, weil ich zwei separate Nachrichten benötige (eine für jede Übereinstimmung). Ich habe versucht, message="{emails.must.match}"
zu verwenden und dann diese Nachricht im Ressourcenbündel zu definieren, aber es zeigt die Nachricht nie wirklich, es zeigt nur den tatsächlichen Text {email.must.match}
.
Nach all dem Erklären ist meine Frage einfach: Wie kann ich sicherstellen, dass jeder dieser FieldMatch
Validatoren auf Klassenebene eine andere Nachricht hat, die in einem Ressourcenbündel definiert ist, so dass er lokalisiert werden kann?
Vielen Dank im Voraus für jede Hilfe!
[EDIT] Für die Neugierigen dies ist der FieldMatch
Validator, den ich benutze.
UPDATE 23.05.2012 Hier ist die Bean-Definition, nach der andere gefragt haben:
%Vor%Fälle wie diese schalten normalerweise etwas ein, das der OP nicht in die Frage aufgenommen hat. Ich schätze, das liegt daran, dass wenn die Lösung einfach wäre oder durch etwas verursacht wurde, von dem die OP dachte, dass es von ihr verursacht wurde, hätten sie kein Problem. Kein Urteil; Ich habe es getan.
Ich stelle daher die Schritte zur Problembehandlung anstelle einer vollständigen Lösung vor, denn basierend auf dem, was Sie gesagt haben, sollte es funktionieren.
Zuerst überprüfen wir, ob es sich um ein seltsames Interpolationsproblem handelt, und versuchen Sie message="{emails-must-match}"
.
Wenn das nicht funktioniert, scheint es, als hätten Sie ValidationMessages.properties verwendet. Ich würde zurückgehen ( <property name="validationMessageSource" ref="messageSource"/>
aus der Validator-Konfiguration entfernen) und sehen, ob Sie message="{emails.must.match}"
mit emails.must.match
in ValidationMessages.properties definiert arbeiten können. Wenn das immer noch nicht funktioniert, gehen Sie zurück zu der Standardmeldung, die Sie mit dem Schlüssel FieldMatch
hatten, und sehen Sie, ob Sie diese Nachricht für beide Fehlerbedingungen erhalten.
Das wird helfen, das Problem zu lokalisieren.
Tags und Links java spring-mvc bean-validation hibernate-validator