jfy3d(劍事)BLOG

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            37 隨筆 :: 0 文章 :: 363 評論 :: 0 Trackbacks

          webwork里上傳文件比較方便,幾行代碼就可以完成。
          只是有個小問題,就是當(dāng)form里的file控件沒有選文件的時提交action
          就會出現(xiàn)異常,通常很多應(yīng)用中不一定非要帶文件上傳的,這個應(yīng)該
          算webwork一個bug吧。

          從報錯的地方可以查出是在fileupload攔截器中
          String[] fileName = multiWrapper.getFileNames(inputName);
          這一行開始中斷掉的
          就是multiWrapper.getFileNames(inputName);中出現(xiàn)空指針錯誤

          如果webwork.properties中配置的是pell上傳包
          需要找到PellMultiPartRequest這個類的以下方法
          //--------------------------------------------------------------------------------------
          public String[] getFileNames(String fieldName) {
                        // TODO - not sure about this - is this the filename of the actual file or
                        // TODO - the uploaded filename as provided by the browser?
                        // TODO - Not sure what version of Pell this class uses as it doesn't seem to be the latest 
                        //這里倒是說明了條件,就是不知道為什么還這么做
                      return new String[]{multi.getFile(fieldName).getName()};
          }
          ---------------------------------------------------------------------------------------//



          可以看到
          multi.getFile(fieldName).getName()如果文件為空肯定會報錯的
          可以先修改成以下方式
          //---------------------------------------------------------------------------------------
          public String[] getFileNames(String fieldName) {
                  if(multi.getFile(fieldName)!=null)   //多加一個判斷
                      return new String[]{multi.getFile(fieldName).getName()};
                  else
                      return new String[]{};
              }
          ----------------------------------------------------------------------------------------//
          這樣form里file不選文件就不在出異常了
          用cos上傳處理方法一樣



          除上面方法
          還修改fileupload攔截器也可以解決
          String[] fileName = multiWrapper.getFileNames(inputName);
          找到這行
          然后修改成下面樣子
          //-----------------------------------------------------------------------------------
          String[] fileName =null;

          try{
                fileName = multiWrapper.getFileNames(inputName);
          }catch(Exception ex){
                //file is null
          }
          -----------------------------------------------------------------------------------//

          posted on 2006-02-20 10:15 劍事 閱讀(2215) 評論(0)  編輯  收藏 所屬分類: webwork
          主站蜘蛛池模板: 仪陇县| 南岸区| 麦盖提县| 东安县| 公安县| 乌拉特中旗| 玉山县| 甘德县| 虹口区| 瓮安县| 出国| 阿克陶县| 石家庄市| 从化市| 马尔康县| 股票| 宁河县| 宜兰县| 阿合奇县| 华坪县| 桂平市| 临清市| 唐河县| 建湖县| 磴口县| 乃东县| 荆门市| 龙井市| 乡宁县| 普安县| 黄浦区| 历史| 临泉县| 安阳县| 灵山县| 裕民县| 敖汉旗| 宁城县| 临西县| 马公市| 务川|