GWT 2.4、Errai1.3.2を使用してWebアプリケーションを開発しています。Tomcat 6(6.0.35)で実行され、Maven(3.0.4)によってビルドされます。
このアプリケーションをTomcatで実行すると、特殊なケースの転送が機能しません。より具体的には、要求は正常に機能しますが、特殊文字の応答はそれらを�に変換します。errai mavenアーキタイプを使用する場合、同じ動作をします。errai RPCの代わりにGWT-RPCを使用すると、すべてが正常に機能します。同じアプリケーションをDev-Modeで実行すると、問題は発生しません。
Chromeで要求/応答を見ると、どちらもUTF-8をエンコードする文字を使用しています。
応答を送信する前にerraiに文字列エンコーディングがあるため、これはerraiのバグである可能性があると思います。
誰かが私を助けてくれるなら、それは素晴らしいことです!それは本当にトリッキーな問題です...
ありがとう、ウォルター
PS:私はすでに次の潜在的な解決策を試しましたが、すべてが機能しません:
index.htmlヘッドの設定:
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
カスタムサーブレットフィルタを定義する
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);
}
TomcatServer.xmlでURIEncodingを設定する
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" useBodyEncodingForURI="true" URIEncoding="UTF-8" />
pom.xmlのMaven
<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>
...