jsf-2 - JSF 中的 UTF-8 表单提交会损坏数据

标签 jsf-2 character-encoding primefaces

在其中一个项目中,我在表单数据上提供了非英语内容(芬兰语)。我们将 JSF 2.0 与 PrimeFaces 结合使用。我在向服务器提交数据时遇到问题。当我提交表单时,数据已损坏。只有芬兰角色在这方面变得腐败。

有人遇到过这个问题并找到解决方案吗?

最佳答案

这是自 PrimeFaces 3.0 以来的一个已知问题。这是由于检查当前 HTTP 请求是否为 ajax 请求的方式发生了变化所致。它是通过请求参数而不是请求 header 来标识的。当在 JSF View 恢复之前第一次检索请求参数时,所有请求参数都将使用服务器的默认字符编码(通常是 ISO-8859-1)而不是 JSF 自己的默认字符编码 UTF-8 进行解析。有关深入的解释,请参阅 Unicode input retrieved via PrimeFaces input components become corrupted .

解决方案之一是创建一个执行 request.setCharacterEncoding("UTF-8") 的过滤器。

@WebFilter("*.xhtml")
public class CharacterEncodingFilter implements Filter {

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

    // ...
}

关于jsf-2 - JSF 中的 UTF-8 表单提交会损坏数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14217646/

相关文章:

jsf - 支持 Bean (@ManagedBean) 还是 CDI Bean (@Named)?

jsf - 通过选择复选框启用和禁用组件

haskell - GHC/Haskell 如何决定它将从/到解码/编码的字符编码?

java - 根据从另一个数据表中选择记录的复选框来填充数据表

jsf - primefaces 数据表用分页器全选

javascript - 为什么 p :inputTextArea value is not set?

org.apache.naming.resources.DirContextURLConnection.getInputStream 处的 java.io.FileNotFoundException

ruby - 用法拉第解析 UTF-8

php-oci8编码问题

jsf - 更改 p :graphicImage in p:dataExporter 的导出值