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