primefaces4.0提供了强大的文件上传功能,可以轻松的实现文件上传下载。
primefaces上传文件只需要在web.xml中增加配置就可以了。具体配置如下:
<filter> <filter-name>PrimeFaces FileUpload Filter</filter-name> <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class> <init-param> <param-name>uploadDirectory</param-name> <param-value></param-value> </init-param> </filter> <filter-mapping> <filter-name>PrimeFaces FileUpload Filter</filter-name> <servlet-name>Faces Servlet</servlet-name> </filter-mapping>
其中<init-param>中的参数随便写。
虽然文件上传很方便,但在用的过程中就遇到了一个问题:中文文件上传文件名乱码。找了很多资料,有人说写转换器,但最终也是最简单的办法 就是写过滤器,用来设置请求、响应的编码。
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException,
ServletException
{
arg0.setCharacterEncoding("UTF-8");
arg1.setCharacterEncoding("UTF-8");
arg2.doFilter(arg0, arg1);
}
<filter>
<filter-name>Character Encoding Filter</filter-name>
<filter-class>com.lgm.common.web.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Character Encoding Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
完成上述操作后,会发现表单提交中文正常,但上传文件的文件名还是有乱码。顿时就无语了。后来找到原因自己都一阵无语,在web.xml中,如果有多个过滤器 还是有顺序问题的。
<!-- 字符编码过滤 -->
<filter>
<filter-name>Character Encoding Filter</filter-name>
<filter-class>com.lgm.common.web.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Character Encoding Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
<!-- primefaces文件上传配置 -->
<filter>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
<init-param>
<param-name>uploadDirectory</param-name>
<param-value></param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
这样配置之后,中文乱码问题就解决了。
解决PrimeFaces4.0文件上传中文乱码问题
文章详细介绍了如何在PrimeFaces4.0中配置文件上传功能,并解决中文文件上传时出现的乱码问题。通过在web.xml中设置字符编码过滤器和PrimeFaces文件上传配置,确保表单提交和文件上传过程中的中文字符正确显示。
1763

被折叠的 条评论
为什么被折叠?



