问题
I made a MVC based website using JSF 2.0 and RichFaces 4. Every input text validation is been done using bean validation annotations. I am using Hibernate Validator as bean validation implementation.
How can I display a localized message?
If I use
@NotNull(message="<h:outputText value=\"#{msg['Mymessage']}\" />")
then it literally displays <h:outputText value="#{msg['Mymessage']}" />
as message.
How is this caused and how can I solve it?
回答1:
You should and can not put JSF tags in the message. Also, JSF's own resource bundle won't be used to resolve localized validation messages. JSR303 bean validation is a completely separate API unrelated to JSF.
To internationalize JSR303 bean validation messages, you need to create a separate ValidationMessages.properties
file in the classpath root which can be localized by ValidationMessages_xx_XX.properties
files.
E.g.
ERVNomView=Your message here
Which is then to be specified with {key}
syntax.
@NotEmpty(message="{ERVNomView}")
See also:
- Chapter 4.3.1.1 of the JSR303 specification
回答2:
For those of you having the same problem as me (the solution given by @BalusC wasn't working with many different properties files for many languages), the thing to do is to name all of the properties files in the following pattern: ValidationMessages_xx.properties
I don't know why, but the pattern ...xx_XX... wasn't working for me.
来源:https://stackoverflow.com/questions/10915770/localization-with-bean-validation-in-jsf