2012-02-20 18 views
3

我們正在使用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> 
      ... 

回答

1

經過近2天搜索的,我已經找到了解決辦法:Tomcat的需要,爲了解決這一問題以下JVM參數:

-Dfile.encoding=UTF-8 

BR沃爾特

+0

謝謝!只是澄清了像我這樣的其他Java新手:在我的ubuntu機器上,它是通過在/ etc/default/tomcat7上向JAVA_OPTS添加「-Dfile.encoding = UTF-8」來完成的 – Shoham 2015-01-13 13:11:33

0
+0

您好,我試圖轉移到Errai 2.0,但沒有對應用程序進行一些更改就無法正常工作。由於我們幾乎完成了實施,所以我不想做出改變。但無論如何,我用errai解決了這個問題1.3.2 – WalterP 2012-02-21 08:32:05