关于JSF中使用的bean验证的两个愚蠢问题:
如何从输出消息中删除前缀form1:userName:
?
<h:message for="userName" />
获得:
form1:userName: Please enter a valid username (5-20 characters)
我还想将名称form1:userName
翻译为User Name
,很容易实现此类翻译,但我无法找到构建消息的位置。
我有一个自定义验证器,比如@CreditCard
,其默认邮件为{foo.bar.BadCreditNumber}
@interface CreditCard {
String message() default "{foo.bar.BadCreditNumber}";
}
消息在类路径的foo/bar/ValidationMessages.properties
中定义。现在如何在每个页面中加载此属性文件?
答案 0 :(得分:4)
关于1:错误消息的格式取决于属性javax.faces.validator.BeanValidator.MESSAGE,必须在应用程序的资源包中指定,如下所示:
javax.faces.validator.BeanValidator.MESSAGE={1}: {0}
占位符{0}
引用由Bean Validation运行时创建的错误消息,{1}
引用组件标签。因此,如果您不希望在邮件中包含标签,请确保占位符{1}
未包含在该属性值中。
更多信息可在JSF 2 spec. 部分3.5.6.3。
中找到关于2:正如BalusC所说的那样,只需将ValidationMessages.properties
放到类路径的根部即可。更多信息也可以在Hibernate Validator reference guide中找到。
答案 1 :(得分:2)
使用input元素的label
属性。
<h:inputText label="User name" ... />
ValidationMessages.properties
文件必须放在类路径根目录中,不包含任何包。另请参阅JSR-303 specification。