QFaces1.2 -- Ajax方式,帶進度條的文件上傳組件FileUpload(for JSF)

               這是QFaces的第4個組件,Ajax方式帶進度條的文件上傳組件,我希望每一個重要組件都提升一個版本,呵呵!這個版本同時修正了ie6下的ajax兼容問題.在介紹完這個組件之后,打算介紹一下如何利用QFaces自定義自己的Ajax組件,希望這個增強框架能對喜歡JSF的人有一些幫助.后面版本的升級可能就不會這么快,或者考慮兼容一下facelets,并修正一些可能出現(xiàn)的錯誤,還有開源計劃,然后繼續(xù)維護并增加一些比較常用與實用的組件,關注一下JSF2.0的發(fā)展等等.

              好了,下面介紹一下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 {
                  
          // 檢查并創(chuàng)建用于保存上傳文件的目錄
                  File fileDir = new File("c:\\my-qfaces-upload-file");
                  
          if (!fileDir.exists()) {
                      fileDir.mkdirs();
                  }
                  
          // 創(chuàng)建文件對象,并將上傳的文件保存到該對象.
                  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類型的參數(shù),處理文件保存之后返回true/false以表示處理成功或失?。?/span>

          這是一個必要的參數(shù),使用該方法對已經上傳的文件進行保存處理,如下將文件保存至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

          posted on 2008-11-28 17:34 huliqing 閱讀(3023) 評論(7)  編輯  收藏 所屬分類: JSF

          評論

          # re: QFaces1.2 -- Ajax方式,帶進度條的文件上傳組件FileUpload(for JSF)[未登錄] 2008-11-28 17:50 jones

          如果是組件自己渲染表單的話,你這個組件基本上沒啥用,因為一般文件上傳的file都會和其它的input組件同在一個表單里面  回復  更多評論   

          # re: QFaces1.2 -- Ajax方式,帶進度條的文件上傳組件FileUpload(for JSF) 2008-11-28 18:09 huliqing

          @jones
          呵呵,你的意見很好。
          這個我也想到了,但是如果與其它組件放在同一個表單里的話,那就變成了,要么與表單的其他組件一起變成ajax方式提交處理,要不就與其他組件一起正常提交表單(非Ajax方式),
          但是與其他組件一起進行ajax提交處理的話,會存在一些問題,可能在通用性上不夠好,因為是ajax方式的,所以存在一些特殊的地方,目前我還找不到更好的方法。
          不過myfaces組件包中就有一個可以與其他組件一起提交的上傳組件,但它不是ajax方式的。  回復  更多評論   

          # re: QFaces1.2 -- Ajax方式,帶進度條的文件上傳組件FileUpload(for JSF)[未登錄] 2008-11-28 19:39 jones

          利用iframe完全可以實現(xiàn)你這個JSF組件  回復  更多評論   

          # re: QFaces1.2 -- Ajax方式,帶進度條的文件上傳組件FileUpload(for JSF)[未登錄] 2008-11-28 19:41 jones

          以前我們項目中一個jsf文件ajax上傳組件就是用iframe實現(xiàn)的(如果嫌自己寫麻煩可以用jquery的ajaxfileupload插件,更簡單),只不過是進度條改成了提示信息,跟你這個功能大同小異。  回復  更多評論   

          # re: QFaces1.2 -- Ajax方式,帶進度條的文件上傳組件FileUpload(for JSF) 2008-11-28 19:58 huliqing

          @jones
          我在組件中也使用了iframe, 我也明白使用這個可以處理這樣的功能的,只不過我需要處理form中的action指定到我特定的過濾器,否則就需要在web.xml中再增加過濾器的設定,這樣處理完全是可以作到的,并且可以做到與所有其它input一同提交表單,但是我發(fā)現(xiàn)這個可能會與myfaces的過濾器存在沖突,在重寫HttpServletRequest之后可能會與myfaces的過濾器沖突,所以我暫時把他作為單獨的組件處理.并且這在某些情況下也是很有用的.  回復  更多評論   

          # re: QFaces1.2 -- Ajax方式,帶進度條的文件上傳組件FileUpload(for JSF) 2009-02-24 11:08 coffeefrog

          seam下MS不能用哦...
            回復  更多評論   

          # re: QFaces1.2 -- Ajax方式,帶進度條的文件上傳組件FileUpload(for JSF) 2009-02-26 07:39 huliqing

          @coffeefrog
          確實與seam不兼容哦
            回復  更多評論   

          導航

          統(tǒng)計

          公告

          文章原創(chuàng),歡迎轉載
          ——轉載請注明出處及原文鏈接

          隨筆分類(60)

          隨筆檔案(33)

          最新評論

          評論排行榜

          主站蜘蛛池模板: 福清市| 监利县| 阿勒泰市| 奉新县| 清苑县| 曲沃县| 微山县| 古田县| 邹平县| 万全县| 于田县| 鹿邑县| 安徽省| 梅河口市| 环江| 大足县| 乾安县| 原平市| 英德市| 阳原县| 灵川县| 杨浦区| 甘泉县| 凉城县| 英德市| 麻江县| 新巴尔虎右旗| 南京市| 乐陵市| 谷城县| 弥勒县| 陇西县| 车致| 丰台区| 鸡西市| 沧州市| 乌鲁木齐县| 吉水县| 宝应县| 甘德县| 商洛市|