【问题标题】:Localization with bean validation in JSF在 JSF 中使用 bean 验证进行本地化
【发布时间】:2012-06-10 13:27:15
【问题描述】:

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

如何显示本地化消息?

如果我使用

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

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

这是怎么引起的,我该如何解决?

【问题讨论】:

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


    【解决方案1】:

    对于那些和我有同样问题的人(@BalusC 给出的解决方案不适用于多种语言的许多不同属性文件),要做的事情是按以下模式命名所有属性文件: ValidationMessages_xx.properties

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

    【讨论】:

    • 模式xx_XX 用于特定于区域的语言环境,例如英式英语是en_UK,而en 仅代表英语。您应该始终使用通用变体来回退,然后它就会起作用。
    【解决方案2】:

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

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

    例如

    ERVNomView=Your message here
    

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

    @NotEmpty(message="{ERVNomView}")
    

    另见:

    【讨论】:

      猜你喜欢
      • 2011-01-29
      • 1970-01-01
      • 2011-03-29
      • 2013-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      • 2015-02-13
      相关资源
      最近更新 更多