如何为JSR 303 bean验证提供翻译的自定义错误消息?

时间:2012-04-27 19:48:18

标签: jsf-2 bean-validation

我的问题与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对此进行了测试,结果相同。

1 个答案:

答案 0 :(得分:4)

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

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

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