它如何在JSF2中使用beanvalidation消息和i18n?
我创建了validation消息(ValidationMessages.properties)文件,以便在我的项目中实现i18n。
看起来像:
pwtNumber.error=PWT Number error..
我在faces-config.xml中定义它:
com.mycompany.web.i18n.ValidationMessages
在我的代码中,我以这种方式使用它:
@Null(message = "{pwtNumber.error}") public String getPwtNummer() { return pwtNummer; }
但问题是我没有收到错误消息,而是来自属性文件的密钥。 这是我得到的错误消息:
myForm:pwtNummer: {pwtNumber.error}
我怎么解决呢?
您将JSF内置validation与JSR303 beanvalidation混淆。
用于覆盖/指定JSF内置validation消息,而不是JSR303 beanvalidation消息。 尽管您使用了JSR303 beanvalidation包文件ValidationMessages.properties
的正确文件名,但JSR303 beanvalidation还要求将bundle文件放在类路径的根目录中(因此, 没有任何包;在默认包中)。 修复之后,不要忘记删除不正确的
条目。
也可以看看:
- JSF的国际化,何时使用消息包和资源包?
- 在JSF中使用beanvalidation进行本地化
- beanvalidation默认参数的顺序?
- JSF:JSR 303 Beanvalidation – 为什么在getter而不是setter?
- JSR303自定义validation器被调用两次
- 如何在ConstraintValidator中自动assembly服务
- 如何在REST Web服务中处理资源validation?
- javax.validation.ValidationException:无法找到默认提供程序
- 你能在运行时更改注释消息吗?
- 在@Constraint中清空validatedBy
- unit testing的良好模式形成了在Spring MVC中具有基于注释的validation的bean