在JSF中使用bean验证进行本地化

时间:2012-06-06 14:00:57

标签: java jsf-2 localization richfaces bean-validation

我使用JSF 2.0和RichFaces 4创建了一个基于MVC的网站。每个输入文本验证都是使用bean验证注释完成的。我正在使用Hibernate Validator作为bean验证实现。

如何显示本地化消息?

如果我使用

@NotNull(message="<h:outputText value=\"#{msg['Mymessage']}\" />")

然后它将<h:outputText value="#{msg['Mymessage']}" />显示为消息。

enter image description here

这是如何引起的?如何解决?

2 个答案:

答案 0 :(得分:32)

您应该也不能在邮件中放置JSF标记。此外,JSF自己的资源包不会用于解析本地化验证消息。 JSR303 bean验证是一个与JSF无关的完全独立的API。

要使JSR303 bean验证消息国际化,您需要在类路径根目录中创建一个单独的ValidationMessages.properties文件,该文件可以由ValidationMessages_xx_XX.properties文件进行本地化。

E.g。

ERVNomView=Your message here

然后使用{key}语法指定。

@NotEmpty(message="{ERVNomView}")

另见:

答案 1 :(得分:1)

对于那些和我有同样问题的人(@BalusC提供的解决方案不能处理许多语言的许多不同的属性文件),要做的是用以下模式命名所有属性文件: ValidationMessages_xx.properties

我不知道为什么,但模式...... xx_XX ......对我不起作用。