Java 源文件中的重音字符在 JSF 页面中显示不正确
Accented characters in Java source file are not displayed correctly in a JSF page
我在 JSF 应用程序中有一个 CDI bean 属性:
@NotNull(message = "Senha não informada.")
public String getSenha()
{
return _senha;
}
问题是当验证失败时,页面上显示的消息是这样的:
请注意信息。
问题不在于 JSF,而在于 Bean Validation,因为如果我将消息放在标准 JSF 验证器并使用它代替 bean 验证注释,消息正确显示并带有正确的重音字符。
我尝试在过滤器中将请求和响应编码更改为 UTF-8 以查看问题是否已解决,但问题仍然存在。
当然,如果我将注释消息更改为此 Senha n\u00e3o informada。 我在页面上得到了正确的消息,但我不想要这个.我想要一种方法来指示 bean 验证 API(或其他东西)以我自己的语言使用重音字符。
我将 Wildfly 10 与所有默认库一起使用。
P.S.:我不想为我的消息使用消息包。
如果编辑器未使用 UTF-8 保存 Java 源文件本身 and/or 编译器未使用 UTF-8 读取,则会发生这种情况。答案取决于所使用的工具。归结为重新配置工具以使用 UTF-8。
如果是 Eclipse,您需要确保工作区文本文件编码设置为 UTF-8,如 this screenshot (source 所示。这将使 Eclipse 使用 UTF-8 保存 Java 源文件,使用 UTF-8 构建项目,并在输出控制台中使用 UTF-8。
如果您使用 Maven 构建项目,则需要将以下条目添加到 pom.xml
。报告输出编码不是解决您的特定问题所必需的,但它很方便。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
如果您使用 Gradle 构建项目,可以通过以下配置解决,正如您对问题的评论中所确认的那样。
tasks.withType(JavaCompile) {options.encoding = 'UTF-8'}
我在 JSF 应用程序中有一个 CDI bean 属性:
@NotNull(message = "Senha não informada.")
public String getSenha()
{
return _senha;
}
问题是当验证失败时,页面上显示的消息是这样的:
请注意信息。
问题不在于 JSF,而在于 Bean Validation,因为如果我将消息放在标准 JSF 验证器并使用它代替 bean 验证注释,消息正确显示并带有正确的重音字符。
我尝试在过滤器中将请求和响应编码更改为 UTF-8 以查看问题是否已解决,但问题仍然存在。
当然,如果我将注释消息更改为此 Senha n\u00e3o informada。 我在页面上得到了正确的消息,但我不想要这个.我想要一种方法来指示 bean 验证 API(或其他东西)以我自己的语言使用重音字符。
我将 Wildfly 10 与所有默认库一起使用。
P.S.:我不想为我的消息使用消息包。
如果编辑器未使用 UTF-8 保存 Java 源文件本身 and/or 编译器未使用 UTF-8 读取,则会发生这种情况。答案取决于所使用的工具。归结为重新配置工具以使用 UTF-8。
如果是 Eclipse,您需要确保工作区文本文件编码设置为 UTF-8,如 this screenshot (source 所示。这将使 Eclipse 使用 UTF-8 保存 Java 源文件,使用 UTF-8 构建项目,并在输出控制台中使用 UTF-8。
如果您使用 Maven 构建项目,则需要将以下条目添加到 pom.xml
。报告输出编码不是解决您的特定问题所必需的,但它很方便。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
如果您使用 Gradle 构建项目,可以通过以下配置解决,正如您对问题的评论中所确认的那样。
tasks.withType(JavaCompile) {options.encoding = 'UTF-8'}