Wie funktioniert es mit der bean-validation-Nachrichten und i18n in JSF2?
Ich erstellt Prüfmeldungen(ValidationMessages.Eigenschaften) - Datei, um die i18n möglich in mein Projekt.
Sieht es so aus:
pwtNumber.error=PWT Number error..
Definierte ich es in faces-config.xml:
<message-bundle>com.mycompany.web.i18n.ValidationMessages</message-bundle>
In meinem code habe ich es auf diese Weise:
@Null(message = "{pwtNumber.error}")
public String getPwtNummer() {
return pwtNummer;
}
Aber das problem ist ich bekomme nicht die Fehlermeldung, sondern der Schlüssel aus der properties-Datei. Es ist die Fehlermeldung, die ich bekomme:
myForm:pwtNummer: {pwtNumber.error}
Wie kann ich es lösen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du bist verwirrend JSF-builtin-Validierung mit JSR303 bean validation.
Den
<message-bundle>
zu überschreiben verwendet werden/geben Sie an, JSF eingebaute Validierung von Nachrichten, nicht JSR303 bean-validation-messages. Obwohl Sie den richtigen Namen für die JSR303 bean-validation-bundle-Datei,ValidationMessages.properties
, die JSR303 bean validation allerdings erfordert auch die bundle-Datei in den root des classpath (also ohne jedes Paket; im default-package). Nachdem Sie behoben haben, dass, vergessen Sie nicht, entfernen Sie die falsche<message-bundle>
Eintrag.Siehe auch:
com
Ordner, der Ihrecom.
root-Paket.<message-bundle>
Eintrag aus faces-config.xml. Ich schrieb einige Schlüssel und Werte in der property-Datei, wiejavax.faces.component.UIInput.CONVERSION -- {0}: Conversion error occurred
konnte ich nicht finden das Klasse@Null
annotation oder@Size
annotation. Deshalb konnte ich nicht überschreiben, die Fehlermeldungen, diese Anmerkungen . Wo kann ich diese finden..javax.faces.component.UIInput.CONVERSION
ist JSF-builtin-Konverter-Nachricht, die nicht Bestandteil der JSR303 bean validation. Legen Sie es in eine eigene Eigenschaften-Datei, die Sie registrieren, indem<message-bundle>
.message
Attribut des JSR303 annotation wie du schon@Null(message = "{pwtNumber.error}")
. Den code in deine Frage ist gut, die einzige Sache, die Sie ändern müssen, ist die Platzierung der properties-Datei im root-Paket und loszuwerden<message-bundle>
. Das ist alles, genau wie bereits in meiner Antwort.ValidationMessages
(case sensitive!) und die predefinied Lage (Paket root!) das macht es automatisch registriert./WEB-INF/classes
Ordner, der gebaut war-Datei. In der Regel (mindestens, ohne Maven), nur stellen Sie es im Stammverzeichnis der Java-Quell-Ordner sollte es tun.@Null
ist nicht recognizeable als standard JSR303 bean-validation-annotation. Es sollte@NotNull
.UIViewRoot#getLocale()
. So, die enduser können es ändern, indem die änderung der JSF-view locale (die<f:view locale="#{someLocaleManager.locale}">
).