4

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

4

1 回答 1

4

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

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

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

于 2012-04-27T19:52:19.643 回答