Dev Zone
          偏執狂才能生存,人生/事業的路上需要再堅持一下
          但是又怎么說得清堅持的結果,道得盡堅持的含義

          2006年2月20日

               發現一個問題,使用struts進行文件上傳,如果有些參數沒有完全定義在ActionForm中,需要從request.getParameter獲取,在表單提交并且validate失敗返回input頁面時,這部分需要從request.getPrameter獲取的參數數據都丟失了,即使再對request進行multipart解析也不能得到。

               經過分析,發現struts的ActionServlet在接收到multipart請求之后,在RequestProcessor中會對request進行封裝:MultiRequestWrapper,然后在Action執行完之后,又將已經封裝的request重新還原。以下是部分代碼,截直RequestProcessor:

          封裝:
              protected HttpServletRequest processMultipart(HttpServletRequest request) {

                  
          if (!"POST".equalsIgnoreCase(request.getMethod())) {
                      
          return (request);
                  }

                  
                  String contentType 
          = request.getContentType();
                  
          if ((contentType != null&&
                      contentType.startsWith(
          "multipart/form-data")) {
                      
          return (new MultipartRequestWrapper(request));
                  }
           else {
                      
          return (request);
                  }


              }

          還原:
             在doForward和doInclude中在forward和include之前都執行了下面的代碼:
                  if (request instanceof MultipartRequestWrapper) {
                      request 
          = ((MultipartRequestWrapper) request).getRequest();
                  }


               問題就出現在這兒。在經過測試之后,發現request只能進行一次multipart解析,這或許和解析request的時候調用了request.inputStream有關,第一次調用之后再調用就不能獲取其中的有效內容了。因此發現request在調用CommonsMultipartRequestHandler.handleRequest進行解析后并還原后,調用common-upload對request進行解析已經得不到任何得提交內容了,因此當Form驗證失敗,返回input頁面時,即使再進行multpart解析,也不能通過request.getPrameter取到你想要的數據。而此時,表單中的數據卻不會丟失(定義在ActionForm中的表單域),這是因為struts的html系列tag在redisplay時值都是從ActionForm獲取的。

                 在將RequestProcessor.doForward和doInclude中還原request的語句注釋后,問題得到了解決。到目前還不清楚為什么struts要還原request,難道是因為chain的原因?

                 webwork中應該不會出現這個問題,因為webwork中無論ServletDispatcher還是FilterDispatcher在對request wrap之后都沒有再還原。
          posted @ 2006-03-15 06:10 dev 閱讀(3942) | 評論 (1)編輯 收藏
           
          tomcat、jdk1.4下出現The output format must have a '{http://xml.apache.org/xalan}content-handler' property!的原因:
              這是因為系統、tomcat或者jdk使用了老版本的xalan.jar。系統如果本身沒有使用,而tomcat/common/lib、tomcat/common/endorsed/lib、tomcat/shared/lib下又沒有xalan.jar的話,那就是jdk使用了老版本的xalan.jar——在jre\lib\rt.jar里面。下載最新的xalan.jar然后放到tomcat/common/endorsed下即可解決這一問題。
          posted @ 2006-03-03 19:46 dev 閱讀(1058) | 評論 (1)編輯 收藏
           
          暫時記下,沒想透徹,思考所得、個人見解以后再加入。

          企業發展的4個階段:
        1. 產品階段
        2. 資產階段
        3. 資本階段
        4. 品牌階段

          企業管理的4個階段:
        5. 人治,嘴上說
        6. 法治,建立制度
        7. 企業文化
        8. 目標管理,充分發揮員工的積極主動型,自我管理
        9.  

          posted @ 2006-02-21 02:13 dev 閱讀(757) | 評論 (0)編輯 收藏
           

                blog很好,blogjava暫時感覺也很好,可是為什么不能寫只允許自己看的日志呢?雖說blog就是為了大家能夠分享彼此的觀點感想,但是總有一些東西是不便公開或者暫時不能公開的。如果允許寫只允許自己看的日志,blog的應用范圍就會更大,價值也會被充分挖掘了。
               也可能是我愚昧,對blog了解還不深吧,上述所說的blog也許已經出現了(自己搞一個得了,笑談)。

          posted @ 2006-02-21 02:02 dev 閱讀(257) | 評論 (0)編輯 收藏
           
        10. XP
        11. SCRUM
          需要并且應該持續關注、思考。

          一些共同點:
        12. 快速迭代
        13. 持續改進
        14. 注重測試
        15. 團隊協作
        16. posted @ 2006-02-20 02:10 dev 閱讀(205) | 評論 (0)編輯 收藏
           
                 很久沒有來這兒了。其實我很喜歡BLOG,可以記下每天工作中的所思所想。我是一個喜歡思考的人,經常有一些想法,有這么一塊地方,能夠把自己的經驗、想法、創造記錄下來,沉積起來,對自己無疑是一種財富。

                不知道是不是有人會寫項目經理日志,我覺得這是一個很好的事情。以前做項目管理的時候只是弄了一個“項目事件”,記錄項目開發過程中發生的、自己覺得是重要的事情,比如某某人進入項目組、離開項目組了,某某模塊版本發布了,發生了什么大的費用等等。寫項目經理日志,或者開發日志、工作日志也行,把自己在工作中、項目開發過程中、項目管理過程中的零零碎碎的想法記錄下來,會是一件很棒的事情。人不應該懶,再累心情再遭也應該堅持寫這種日志。

                或許小筆記本、那種可以隨身攜帶的那種是一件更好的日志記錄工具,可惜容量不夠,而且不能檢索。掌上電腦?寫起來似乎麻煩了,table-pc,好像又太大了,攜帶不方便,可惜,要是手寫識別技術更智能一點、掌上電腦更薄一點,而且可以展開屏幕就棒了。可惜。

           
          posted @ 2006-02-20 01:19 dev 閱讀(191) | 評論 (0)編輯 收藏
           
          主站蜘蛛池模板: 宜城市| 长岛县| 彭山县| 云林县| 商都县| 兴仁县| 承德县| 海阳市| 仲巴县| 特克斯县| 龙口市| 平度市| 镇江市| 宁津县| 双牌县| 临清市| 涿州市| 宜兰市| 镇雄县| 田阳县| 阳谷县| 乌审旗| 德钦县| 阿拉善盟| 格尔木市| 桂阳县| 星子县| 镇原县| 高密市| 梓潼县| 天镇县| 鹤峰县| 志丹县| 元江| 花莲市| 灌南县| 庆元县| 安福县| 定安县| 中山市| 肥东县|