在使用primefaces的组件p:fileUpload进行文件上传的时候,如果上传文件名是中文的,上传到服务器看到的文件名就会使乱码,具体解决办法如下:
1、写一个过滤类:
package com.li;
import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse;
public class CharacterEncodingFilter implements Filter{
public void destroy() { }
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); chain.doFilter(request, response); }
public void init(FilterConfig filterConfig) throws ServletException { } }
2、在web.xml中配置过滤器:
<!--解决上传乱码问题--> <filter> <filter-name>Character Encoding Filter</filter-name> <filter-class>com.li.CharacterEncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>Character Encoding Filter</filter-name> <servlet-name>Faces Servlet</servlet-name> </filter-mapping> <filter> <filter-name>PrimeFaces FileUpload Filter</filter-name> <filter-class> org.primefaces.webapp.filter.FileUploadFilter </filter-class> </filter> <filter-mapping> <filter-name>PrimeFaces FileUpload Filter</filter-name> <servlet-name>Faces Servlet</servlet-name> </filter-mapping>
注:这里需要注意顺序问题。
|