每日一得

          不求多得,只求一得 about java,hibernate,spring,design,database,Ror,ruby,快速開發
          最近關心的內容:SSH,seam,flex,敏捷,TDD
          本站的官方站點是:顛覆軟件

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            220 隨筆 :: 9 文章 :: 421 評論 :: 0 Trackbacks

          keyword: struts錯誤,持續構建,checkbox

          前天在運行應用時有一個頁面一點button就轉到系統錯誤頁面,折騰了好半天,在Action里打樁調試連調試信息都見不到,還以為時log4j配置出了問題,改來改去也不知道原因在哪,最后檢查居然時在Action里用錯了Form,哎,真是要命.回憶了一下,以前這個地方一直正常,怎么這次修改了別的地方就影響到這了呢,記憶中好像是因為做了一次重構不小心在批量修改的時候把這里給改了.

          現在總結一下Struts里可能常出現的錯誤的原因:

            1.配置文件里的input或者forward寫錯
            2.jsp里的Action對應的.do寫錯,實際就是對應的Form也錯了
            3.Action里Form寫錯,或者forward為空
            4.還有Form里的屬性和jsp頁面的屬性不一致

          經過這次的教訓也讓我有了一個以前不怎么重視的想法要實現,就是持續構建,如果有了持續構建我的每一次的提交都有報告和分析結果出來,防患于未然,也不至于讓我折騰半天為了一行代碼.
          方案就選maven + cc .

          目前國內用的多么?沒有調查過,不過就我目前了解到的情況,好多公司的做法真是讓人覺得有點shit,但愿越來越好,越來越規范.

          寫到這里又想起一個關于jsp的checkbox問題,例如,在一個產品刪除的頁面里,每條記錄前面有一個checkbox,我們一般的做法是給checkbox的value賦值為產品ID的值,然后Action根據ID就可以直接刪除產品了,但是問題是有時候我除了需要刪除這個產品,同時還需要在下一個頁面里再將當前頁面的東西顯示一次,讓用戶確認,就還需要除產品ID以外的信息了,該怎么辦呢?  我以前有一個比較笨的辦法就是在value里拼數據,
          比如id | name | quantity | other,最后在Action里再解析,現在想來其實沒有必要,可以用<logic:iterator/>里的indexId屬性來做。
          具體請參看這里:
          這里貼下關鍵部分的代碼:
          jsp代碼:

          <logic:iterate id="testqclist" name="testQCActionForm" property="result" indexId="index" >
          <tr bgcolor="#FFFFFF">
          <td height="26" bgcolor="#EEEEEE">
          <div align= "center" >
          <input type="checkbox" name="checkboxVal" value="<%=index%>" ></div>
          </td>
          </tr>
          </logic:iterate>

          Action代碼: [原文作者寫在Form里實現,不過我個人喜歡在Action里做,看你情況了]

          if (checkboxVal != null && checkboxVal.length > 0){

                
          for (int i = 0; i < checkboxVal.length; i++){

                  
          int chkVal = Integer.parseInt(checkboxVal[i]); //取得checkbox的index值

                  //..........................

                  checkform.setSaamsampleid (datesampledVal[chkVal].toString());//取得和checkbox為true的其他屬性的值

                  checkform.setSaamsampleid(saamsampleidVal[chkVal].toString());

                  //......................................................

                }


              }



           

          posted on 2006-03-05 05:58 Alex 閱讀(969) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 鄂温| 宁夏| 斗六市| 日土县| 教育| 阿尔山市| 青田县| 南昌县| 贵南县| 大冶市| 锡林郭勒盟| 德清县| 西畴县| 南京市| 迭部县| 蒙阴县| 天水市| 东港市| 调兵山市| 海林市| 温州市| 舞阳县| 兴安县| 合江县| 淳安县| 肥乡县| 宣武区| 湟中县| 濮阳市| 青州市| 巨野县| 二连浩特市| 清原| 大冶市| 台东市| 萍乡市| 尼木县| 彰武县| 自治县| 浑源县| 临邑县|