我們正在使用GWT 2.4,Errai 1.3.2開發Web應用程序。它運行在Tomcat 6(6.0.35)上,由Maven(3.0.4)構建。UTF-8編碼不適用於Errai和Tomcat
在Tomcat上運行此應用程序時,特殊情況的傳輸不起作用。更具體地說,請求可以正常工作,但特殊字符的響應將它們轉換爲 。當使用errai maven原型時,它具有相同的行爲。當使用GWT-RPC而不是errai RPC時,一切正常。在開發模式下運行相同的應用程序,問題不會發生。
在chrome中查看請求/響應時,兩者都具有字符編碼UTF-8。
我認爲這可能是一個errai錯誤,因爲在發送響應之前errai中有一些字符串編碼。
這將是偉大的,如果有人可以幫助我!這真是一個棘手的問題......
感謝,沃爾特
PS:我已經嘗試以下可能的解決方案,而這一切不工作:
設置的index.html頭:
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
定義一個定製的硒rvlet過濾
的web.xml
<filter>
<filter-name>SessionFilter</filter-name>
<filter-class>at.apa.excelsa.web.server.SessionFilter</filter-class>
<init-param>
<param-name>requestEncoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SessionFilter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
Filter.java
public class SessionFilter implements Filter {
String encoding;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
encoding = filterConfig.getInitParameter("requestEncoding");
if (encoding == null) {
encoding = "UTF-8";
}
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if(request.getCharacterEncoding()==null) {
request.setCharacterEncoding(encoding);
}
response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
在Tomcat的server.xml中設置的URIEncoding
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" useBodyEncodingForURI="true" URIEncoding="UTF-8" />
的Maven在pom.xml中
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
...
<build>
<outputDirectory>war/WEB-INF/classes</outputDirectory>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>${gwt.maven}</version>
<configuration>
...
<extraJvmArgs>-Xmx512m **-Dfile.encoding=UTF-8**</extraJvmArgs>
...
</configuration>
<executions>
<execution>
<goals>
<goal>resources</goal>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
...
謝謝!只是澄清了像我這樣的其他Java新手:在我的ubuntu機器上,它是通過在/ etc/default/tomcat7上向JAVA_OPTS添加「-Dfile.encoding = UTF-8」來完成的 – Shoham 2015-01-13 13:11:33