与UTF8字符滤波器primefaces文件上传滤波器(primefaces fileupload

2019-06-25 18:06发布

我有一个在primefaces 3 UTF-8编码的问题,但与此 (在web.xml中的字符编码添加过滤器),我的问题解决了。 但我有我的web.xml文件上传primefaces另一个过滤器。 在页面有文件上传,即使没有任何上传,我的字符编码过滤器不工作和UTF-8字符集具有未知值,就像当时有上载无过滤器。 我怎么可以同时使用此过滤器?

Answer 1:

这是PrimeFaces'的错误MultipartRequest 。 它使用表单域,而不是在HTTP Servlet请求的一组由做平台默认的字符编码HttpServletRequest#setCharacterEncoding()中的字符编码过滤器(我假设在被映射web.xml的PrimeFaces FileUploadFilter )。

基本上,线85和88 MultipartRequest在PrimeFaces 3.3

formParams.get(item.getFieldName()).add(item.getString());
// ...
items.add(item.getString());

需要如下改变

formParams.get(item.getFieldName()).add(item.getString(getCharacterEncoding()));
// ...
items.add(item.getString(getCharacterEncoding()));

我已经报告说,它为问题4266 。 在此期间,你最好的赌注是手动修复在支持bean操作方法不正确的字符串编码如下,假设服务器平台默认的编码是ISO-8859-1:

string = new String(string.getBytes("ISO-8859-1"), "UTF-8");


Answer 2:

从本质上讲,你需要的代码来解决这个问题下面一行:

new String(file.getFileName().getBytes(Charset.defaultCharset()), "UTF-8")


文章来源: primefaces fileupload filter with utf8 characters filter