Jsf 2 JSF中的UTF-8表单提交正在破坏数据
在其中一个项目中,我在表单数据中提供了非英语内容(芬兰语)。我们将JSF2.0用于PrimeFaces。我在向服务器提交数据时遇到问题。我提交表单时,数据已损坏。只有芬兰人的角色在这方面变得腐败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)而不
是否有人已经面对这个问题并找到了解决方案?这是自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);
}
// ...
}