【问题标题】:How supply translated custom error message for JSR 303 bean validation?如何为 JSR 303 bean 验证提供翻译的自定义错误消息?
【发布时间】:2012-04-27 19:48:18
【问题描述】:

我的问题与Custom validation message for bean validation基本相同。但是,我无法解决问题。

bean 类:

public class PersonalInfoBean {
    @Size(min=5, max=55, message="{invalid_name}")
    String name;
    ...
}

我在 Eclipse 项目的 src 文件夹中的一个包中创建了 Messages.properties。

invalid_name=Please enter a valid name

我在 faces-config.xml 中注册了文件:

<application>
    <message-bundle>com.webage.survey.Messages</message-bundle>
</application>

facelet 文件有:

<h:inputText value="#{personalInfo.name}" id="name"/> <h:message for="name" style="color: red" /><br/>

当我提交表单时,我只看到 {invalid_name} 作为错误消息,而不是“请输入有效名称”。

我用 JBoss 6 和 WebSphere 8 对此进行了测试,结果相同。

【问题讨论】:

    标签: jsf-2 bean-validation


    【解决方案1】:

    您正在将 JSR 303 Bean Validation framework 与 JSF 内置验证混合使用。 JSR 303 Bean Validation 框架不是 JSF 框架的一部分。它是一个完全独立的验证框架,JSF 恰好有集成支持。

    您需要在不同的属性文件中指定 JSR 303 Bean 验证消息,而不是使用 ValidationMessages.properties确切文件名,可以使用 ValidationMessages_xx_XX.properties 文件进行本地化。这些文件必须放在类路径的根目录中。

    您无需在faces-config.xml 中注册。 &lt;message-bundle&gt; 仅用于 JSF 内置转换器和验证器,例如 required="true"&lt;f:validateRegex&gt;&lt;f:convertDateTime&gt; 等。

    【讨论】:

    • 成功了!我必须将 ValidationMessages.properties 放在默认(根)包中。
    猜你喜欢
    • 2011-08-09
    • 2015-01-10
    • 2019-05-21
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 2018-10-02
    • 2013-11-23
    • 1970-01-01
    相关资源
    最近更新 更多