它如何在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进行本地化