Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 JSF中的UTF-8表单提交正在破坏数据_Jsf 2_Character Encoding_Primefaces - Fatal编程技术网

Jsf 2 JSF中的UTF-8表单提交正在破坏数据

Jsf 2 JSF中的UTF-8表单提交正在破坏数据,jsf-2,character-encoding,primefaces,Jsf 2,Character Encoding,Primefaces,在其中一个项目中,我在表单数据中提供了非英语内容(芬兰语)。我们将JSF2.0用于PrimeFaces。我在向服务器提交数据时遇到问题。我提交表单时,数据已损坏。只有芬兰人的角色在这方面变得腐败 是否有人已经面对这个问题并找到了解决方案?这是自PrimeFaces 3.0以来已知的问题。这是由于检查当前HTTP请求是否为ajax请求的方式发生了变化。它由请求参数而不是请求头标识。当在恢复JSF视图之前第一次检索请求参数时,所有请求参数都将使用服务器的默认字符编码(通常为ISO-8859-1)而不

在其中一个项目中,我在表单数据中提供了非英语内容(芬兰语)。我们将JSF2.0用于PrimeFaces。我在向服务器提交数据时遇到问题。我提交表单时,数据已损坏。只有芬兰人的角色在这方面变得腐败


是否有人已经面对这个问题并找到了解决方案?

这是自PrimeFaces 3.0以来已知的问题。这是由于检查当前HTTP请求是否为ajax请求的方式发生了变化。它由请求参数而不是请求头标识。当在恢复JSF视图之前第一次检索请求参数时,所有请求参数都将使用服务器的默认字符编码(通常为ISO-8859-1)而不是JSF自己的默认字符编码UTF-8进行解析。有关详细说明,请参阅

解决方案之一是创建一个过滤器,该过滤器执行
请求.setCharacterEncoding(“UTF-8”)


你在提交过程中上传文件吗?我用捷克语开发应用程序,这发生在我的IceFaces文件上传组件上。但在正常情况下,一切都很好。您可以使用Filter来设置芬兰语字符集,但这仍然是一个奇怪的错误,它使用以下注释对我有效:@WebFilter(filterName=“CharacterEncodingFilter”,urlPatterns={”/*“})Thanks@Kia:显然您的
FacesServlet
未映射到
*.xhtml
,但是在其他方面,例如
/faces/*
*.jsf
。然后,您应该将过滤器的URL模式更改为相同。
/*
确实会匹配每个HTTP请求。顺便说一下,只要
@WebFilter(“/*”)
就足够了。
@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);
    }

    // ...
}