0

我的 Java 注释有一个讨厌的问题:

@Pattern(regexp = "(...)", message = "(...) Tekst in Polish (...)")
    private String ip;

这使用 BindingResult 和 Thymeleaf 链接到我的视图:

<p th:if="${#fields.hasErrors('ip')}" class="error" th:errors="*{ip}"></p>

但是,即使我的整个页面都是 UTF-8 并且文本显示正确,注释的编码也不正确。我无法在我的本地机器上重现它,它只发生在我客户的服务器上。在两台服务器上,file.encoding等于UTF-8。Thymeleaf 配置也设置为使用 UTF-8,Spring 也配置为使用UTF-8

<filter>
  <filter-name>encodingFilter</filter-name>
  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
  </init-param>
</filter>

我该如何解决这个问题?感谢所有回复。

解决方案:我将解决方案移至下面的另一篇文章。

4

1 回答 1

0

解决方案:这种奇怪的行为是由 Gradle 引起的,它以不同的编码构建我的 WAR(在我的情况下:与 UTF-8 不同)。我添加: org.gradle.jvmargs='-Dfile.encoding=UTF-8' 到我的 gradle.properties 文件(位于与 build.gradle 相同的路径 - 项目根目录)。另一种解决方案是添加:

tasks.withType(JavaCompile) {
  options.encoding = 'UTF-8'
}

构建.gradle。

于 2017-09-21T10:15:16.663 回答