它如何与JSF2中的bean验证消息和i18n一起使用?

Kay*_*ser 8 java jsf java-ee bean-validation

我创建了验证消息(ValidationMessages.properties)文件,以便在我的项目中实现i18n.

看起来像:

pwtNumber.error=PWT Number error.. 
Run Code Online (Sandbox Code Playgroud)

我在faces-config.xml中定义它:

<message-bundle>com.mycompany.web.i18n.ValidationMessages</message-bundle>
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我以这种方式使用它:

 @Null(message = "{pwtNumber.error}")
    public String getPwtNummer() {
        return pwtNummer;
    }
Run Code Online (Sandbox Code Playgroud)

但问题是我没有收到错误消息,而是来自属性文件的密钥.这是我得到的错误消息:

myForm:pwtNummer: {pwtNumber.error}
Run Code Online (Sandbox Code Playgroud)

我怎么解决呢?

Bal*_*usC 8

您将JSF内置验证与JSR303 bean验证混淆.

<message-bundle>是要用于覆盖/指定JSF内置验证消息,而不是JSR303豆验证消息.虽然您使用了JSR303 bean验证包文件的正确文件名ValidationMessages.properties,但JSR303 bean验证还要求将bundle文件放在类路径的根目录中(因此,没有任何包;在默认包中).解决之后,不要忘记删除错误的<message-bundle>条目.

也可以看看: