【问题标题】:UTF-8 in PrimeFaces 3.xPrimeFaces 3.x 中的 UTF-8
【发布时间】:2012-06-24 12:08:43
【问题描述】:

我有一个非常简单的应用程序,在我的索引页面中有一个输入文本和一个转到 page2.xhtml 的按钮。

    <h:body>
        <h:form>
            <h:inputText value="#{mainBean.testValue}"/>
            <p:commandButton update="myoutput" value="ajax call" ajax="false"/>
            <p:separator />
            <h:commandButton action="#{mainBean.gotoPageTwo}" value="goto Page2"/>
            <br/>
            <h:outputText value="#{mainBean.testValue}" id="myoutput"/>
        </h:form>
    </h:body>
</html>

我用 PrimeFaces 2.2.1 测试了这个应用程序,没有问题。 但是在提交上述每个按钮后,我的 UTF-8 字符将被破坏。 我测试了filter,但它不起作用。 这是 PrimeFaces 3.x 中的错误吗? 任何机构都可以解决这个问题吗?

【问题讨论】:

  • 您是否尝试过定位问题所在?应用服务器是否将 UTF-8 发送到您的浏览器,但响应标头说它是(例如)Latin1?还是应用服务器/框架在将字符发送到浏览器之前将它们转换为 Latin1?
  • 我用 firebox 检查了 Content-Type,它是:text/html;charset=UTF-8。注意primefaces 2.2.1没有问题

标签: jsf jsf-2 primefaces utf-8


【解决方案1】:

您在 PrimeFaces 论坛上找到的答案示例 web.xml 不完整。 &lt;filter-mapping&gt; 不见了。没有它,过滤器甚至根本不会运行。相应地添加它

<filter-mapping>
    <filter-name>Character Encoding Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

当您已经在使用 Servlet 3.0(Tomcat 7、Glassfish 3 等)时,另一种方法是仅在类上使用 @WebFilter 注释。不要忘记从web.xml 中删除过滤器条目。

@WebFilter("/*")

有关 PrimeFaces 2.x-3.x 升级期间出现此字符编码问题的原因的背景说明,另请参阅Unicode input retrieved via PrimeFaces input components become corrupted

【讨论】:

  • 你是对的,但我的回答还没有完全完成。我倾向于多次编辑(和你一样):)
  • 谢谢。我的问题解决了。但在其他应用程序中,在有 primefaces 文件上传的页面中,会出现问题。事实上,我在 web.xml 中有两个过滤器,当页面中有 p:upload 时,字符编码过滤器不起作用。如何解决这个问题?
  • 确保在web.xml中PrimeFaces文件上传过滤器之前映射了字符编码过滤器。
猜你喜欢
  • 1970-01-01
  • 2011-03-09
  • 2018-04-02
  • 1970-01-01
  • 2019-07-20
  • 2011-06-04
  • 2015-11-06
  • 1970-01-01
  • 2017-05-23
相关资源
最近更新 更多