这是QFaces的第4个组件,Ajax方式带进度条的文件上传组件,我希望每一个重要组件都提升一个版本,呵呵!这个版本同时修正了ie6下的ajax兼容问题.在介绍完这个组件之后,打算介绍一下如何利用QFaces自定义自己的Ajax组件,希望这个增强框架能对喜欢JSF的人有一些帮助.后面版本的升级可能就不会这么快,或者考虑兼容一下facelets,并修正一些可能出现的错误,还有开源计划,然后继续维护并增加一些比较常用与实用的组件,关注一下JSF2.0的发展等等.
    好了,下面介绍一下QFaces这个新成员吧:FileUpload , 下面是使用过程的截图,对于界面我没有太高的要求,也没有开放相关的属性,还是简单使用为第一要素,如果你自定义组件,可以做出更酷或更花俏的界面出来,呵呵!
   
组件的使用方法非常简单:
    
<q:fileUpload process="#{FileUploadBean.process}"/>
以下是html完整代码,需要注意的是组件不能放在form里面,因为组件会渲染自已的form标签:
<f:view>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>FileUpload Demo</title>
    </head>
    <body>
        <q:fileUpload process="#{FileUploadBean.process}"/>
    </body>
</html>
</f:view>
后台bean只要绑定一个处理方法就可以,简单的操作处理,将文件保存至本地硬盘,下面是demo中的示例:
    public boolean process(QFile qfile) throws Exception {
        // 检查并创建用于保存上传文件的目录
        File fileDir = new File("c:\\my-qfaces-upload-file");
        if (!fileDir.exists()) {
            fileDir.mkdirs();
        }
        // 创建文件对象,并将上传的文件保存到该对象.
        File upfile = new File(fileDir.getAbsolutePath() + "\\" + qfile.getFilename());
        qfile.save(upfile);
        return true;
    }
组件已经帮你处理了很多繁琐的事情,你可以从QFile这个对象中获得上传文件的大小,原始文件名,后缀名,宽度,高度(如果是图片),再进一步进行处理等等.
下面是组件的所有可用属性,除了必要的红色属性之外,其它的都是可选的:
    
        
            | 
             属性 
             | 
            
             类型 
             | 
            
             说明 
             | 
            
             必需 
             | 
        
        
            | 
             id 
             | 
            
             String 
             | 
            
             
             | 
            
             否 
             | 
        
        
            | 
             value 
             | 
            
             String 
             | 
            
             上传按钮的标签,如:value=”上传” 
             | 
            
             否 
             | 
        
        
            | 
             size 
             | 
            
             Number 
             | 
            
             组件宽度,如:size=”20” 
             | 
            
             否 
             | 
        
        
            | 
             showList 
             | 
            
             Boolean 
             | 
            
             是否显示已成功上传的文件列表,如:showList=”true” 
             | 
            
             否 
             | 
        
        
            | 
             process 
             | 
            
             Method 
             | 
            
             方法绑定,该方法用于处理上传文件,方法签名如下: 
            Boolean
            process(QFile), 
            该方法接受一个QFile类型的参数,处理文件保存之后返回true/false以表示处理成功或失败. 
            这是一个必要的参数,使用该方法对已经上传的文件进行保存处理,如下将文件保存至d:\myfile.rar 
            public
            boolean process(QFile qfile) { 
                File myfile = new File(“d:\myfile.rar”); 
            qfile.save(myfile); 
            return true; 
            } 
             | 
            
             是 
             | 
        
        
            | 
             rendered 
             | 
            
             Boolean 
             | 
            
             是否显示组件,如:rendered=”false” 
             | 
            
             否 
             | 
        
    
更多的设置需要修改web.xml,比如:
uploadMaxSize,
 uploadThresholdSize, 
uploadTemp等,文档中有完整的说明,下面是下载地址 :
QFaces 下载页面 -- 基于JSF的Ajax增强框架。 
- huliqing@huliqing.name
- http://www.huliqing.name