2012-03-14 33 views
7

让我分享我对于primefaces 3.1的独特失望,直到现在... 我在RichFaces应用程序中使用了phew组件,当我意识到问题时,我的一些字符显示错误,在所有我知道它是必需的地方声明UTF-8字符集。如何在primefaces webapp中设置字符集?

问题发生时,输入一些特殊的字符,如“圣保罗”a和submited页面。提交数据后重新显示是为 “SAA£圣保罗”

我已经尝试过如下因素变通:

1)的Eclipse IDE:文本文件enconding选项

2)JSF文件:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

3)JBOSS server.xml中:

<Connector protocol="HTTP/1.1" URIEncoding="UTF-8" port="${jboss.web.http.port}" address="0.0.0.0" 
     redirectPort="${jboss.web.https.port}" /> 

4)的web.xml:

<?xml version="1.0" encoding="UTF-8"?> 

5)JSF文件:

<h:form acceptcharset="UTF-8" enctype="application/form-data"> 

6)primefaces版本升级到3.2

感谢您的帮助! ;-)

+1

值得注意的是,PrimeFaces 3.2已经发布。我不知道这是否能解决你的问题,但我想这不会伤害尝试。 – 2012-03-15 04:04:45

+0

现在试过,不解决我的问题... thanx反正! – Guilherme 2012-03-15 12:17:31

+1

你使用的是RichFaces还是PrimeFaces?你大喊“RICHFACES”,这相当混乱。如果RichFaces,您使用的是JSP还是Facelets?请更详细地描述问题,但不清楚问题发生的方式和位置。详细描述如何重现问题的步骤。详细描述预期/意外结果。例如。 “我在'h:inputText'中输入XYZ后,在'h:outputText'中重新显示为ZYX,等等。 – BalusC 2012-03-15 12:33:44

回答

9

我一直被迫创建过滤器谁套为每个请求的字符集...

public class CharacterEncodingFilter implements Filter { 

    @Override 
    public void destroy() { 
     // TODO Auto-generated method stub 
    } 

    @Override 
    public void doFilter(ServletRequest request, ServletResponse response, 
     FilterChain chain) throws IOException, ServletException { 
     response.setCharacterEncoding("UTF-8"); 
     request.setCharacterEncoding("UTF-8"); 
     chain.doFilter(request, response); 
    } 

    @Override 
    public void init(FilterConfig arg0) throws ServletException { 
     // TODO Auto-generated method stub 
    } 

} 

这是解决我的问题

1

我只是取消注释部分的conf/web.xml(Tomcat服务器web.xml)过滤所有请求并转换为UTF-8。

<!-- A filter that sets character encoding that is used to decode URIs--> 
<!-- parameters in a POST request --> 
<filter> 
     <filter-name>setCharacterEncodingFilter</filter-name> 
     <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class> 
     <init-param> 
      <param-name>encoding</param-name> 
      <param-value>UTF-8</param-value> 
     </init-param> 
</filter> 

    <!-- The mapping for the Set Character Encoding Filter --> 
    <filter-mapping> 
     <filter-name>setCharacterEncodingFilter</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 
相关问题