我们正在使用GWT 2.4,Errai 1.3.2开发Web应用程序。它运行在Tomcat 6(6.0.35)上,由Maven(3.0.4)构建。
在Tomcat上运行此应用程序时,特殊情况的传输无效。更具体地说,请求工作正常,但特殊字符的响应将它们转换为 。使用errai maven原型时,它具有相同的行为。当使用GWT-RPC而不是errai RPC时,一切正常。在开发模式下运行相同的应用程序,不会发生此问题。
在查看chrome中的请求/响应时,两者都具有UTF-8字符编码。
我认为这可能是一个错误的错误,因为在发送响应之前,errai中有一些字符串编码。
如果有人能帮助我的话会很棒!!这真是一个棘手的问题......
谢谢,Walter
PS:我已经尝试过以下可能无法解决的潜在解决方案:
设置index.html头:
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
定义自定义Servlet过滤器
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" />
maom in 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>
...
答案 0 :(得分:1)
经过近两天的搜索,我找到了解决方案:Tomcat需要以下JVM参数才能解决问题:
-Dfile.encoding=UTF-8
BR Walter
答案 1 :(得分:0)
你考虑过检查Errai 2.0吗? http://errai-blog.blogspot.com/2012/02/quick-tour-of-errai-20.html