`
boy_program
  • 浏览: 10428 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

primefaces文件上传乱码问题

 
阅读更多

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>

 这样配置之后,中文乱码问题就解决了。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics