幸せのちから

          平凡的世界
          看似平常實崎嶇
          成如容易卻艱辛

          Struts的html:checkBox標簽超郁悶的問題

          ???? 被Struts的html:checkBox標簽使用的小問題郁悶了兩天,今天終于找到了解決的辦法。如果大家也遇到同樣的問題,可以參考。

          1)需求:

          ???? 當(dāng)通過菜單進入頁面時,頁面中的checkbox處于被選中狀態(tài),頁面提交后forward回本頁,對應(yīng)的checkbox保持提交時的狀態(tài),也就是說:如果提交時checkbox是選中狀態(tài)回來仍然是選中狀態(tài);如果用戶在提交前將checkbox的勾去掉,回來時checkbox應(yīng)該為為選中狀態(tài)。

          2)問題:

          ???? 這個需求看起來很簡單,只需要
          ??? 1)在對應(yīng)的form中將checkbox對應(yīng)的屬性設(shè)為true就行了:
          ???????? private boolean syaken = true;
          ??? 2)在對應(yīng)的jsp中使用html:checkbox標簽就行了
          ? ? ?? <html:checkbox property="syaken"/>
          ??? 但問題是checkbox標簽不會去set初始化值為true的checkbox屬性,不賦初值時Struts默認賦為false;
          ??? 從網(wǎng)上找資料有人說可以實現(xiàn)ActionFrom的reset()方法將對應(yīng)的屬性值設(shè)為false,但reset方法是在form實例化以后被調(diào)用的,也就是說你初始化的值true將被重置為false,這和直接將屬性值設(shè)為false沒有任何區(qū)別,這樣做的結(jié)果是你從菜單進入頁面時checkbox是處于不被選中的狀態(tài)。
          ?? 他們之間存在著矛盾,問題的關(guān)鍵就是每次提交時,Struts并沒有去重新設(shè)置所有checkbox的屬性值,而是有選擇地(初始化值為false)地進行重新設(shè)置。

          3)解決辦法:

          ???? 超級簡單,在checkbox后面添加一個和checkbox的屬性同名并且value為“false”的隱藏輸入框,強迫Struts去重新設(shè)置checkbox的屬性值:
          ????? <html:checkbox property="syaken"/>&nbsp;
          ? ??? <input type="hidden" name="syaken" value="false">

          ???
          這個問題郁悶了我兩天,沒想到解決辦法這么簡單。

          ????

          posted on 2006-04-14 01:03 Lucky 閱讀(20125) 評論(15)  編輯  收藏 所屬分類: java

          評論

          # re: Struts的html:checkBox標簽超郁悶的問題 2006-04-14 11:48 webjlwang

          <html:checkbox property="syaken" value="true"/>
          就行了  回復(fù)  更多評論   

          # re: Struts的html:checkBox標簽超郁悶的問題 2006-04-14 12:54 xplucky

          @webjlwang
          我試著按你提供的方法測試,由于你沒有說form中對應(yīng)的checkbox的property的初始值應(yīng)該如何設(shè)置,所以我進行了兩組測試:
          1)將form中對應(yīng)的checkbox的property的初始值設(shè)置為true
          結(jié)果: 從menu中進入JSP頁面,checkbox處于選中狀態(tài),當(dāng)我取消chekbox的提交,然后提交,返回頁面時我取消的checkbox仍然處于選中狀態(tài),測試失敗
          2)將form中對應(yīng)的checkbox的property的初始值設(shè)置為false
          結(jié)果: 從menu中進入JSP頁面,checkbox處于未選中狀態(tài),測試失敗

          我不清楚你是不是還進行了其他的設(shè)置?  回復(fù)  更多評論   

          # re: Struts的html:checkBox標簽超郁悶的問題 2006-04-17 11:22 南一郎

          如果你是采取struts的MVC模式,解決方法更為簡單,邏輯也更為清晰。Jsp->ActionForm->Action。Form里有對應(yīng)的屬性sysken,你可以按你的需要在這個類里預(yù)設(shè)屬性的默認值。在Action里面,你取得這個Form后,可以顯式地用set方法設(shè)置返回到頁面時這個屬性的值,然后能過request.setAttribute("FormName",form)類似的方法設(shè)置一下,再return到你所指向的Forward不就行了嗎。就這么簡單。這樣做更符合MVC的思想。
            回復(fù)  更多評論   

          # re: Struts的html:checkBox標簽超郁悶的問題 2006-04-17 12:01 xplucky

          @南一郎
          不知道你做過實驗沒有?  回復(fù)  更多評論   

          # re: Struts的html:checkBox標簽超郁悶的問題 2006-05-19 13:32 LJS

          在ACTIONFORM要加reset方法就可以了.再測試看看  回復(fù)  更多評論   

          # re: Struts的html:checkBox標簽超郁悶的問題 2006-05-31 11:28 pc

          http://www.kpwang.com/jsp_java/200644165429.htm Java程序中的事件處理
          http://www.kpwang.com/jsp_java/20064416536.htm Java多線程設(shè)計模式
          http://www.kpwang.com/jsp_java/200644155359.htm Java程序如何穿透帶有密碼驗證的代理  回復(fù)  更多評論   

          # re: Struts的html:checkBox標簽超郁悶的問題 2006-09-09 01:46 上官鴻

          <input type="checkbox" name="usrId" value="<bean:write name="pUsrList" property="usrId"/>" />
            回復(fù)  更多評論   

          # re: Struts的html:checkBox標簽超郁悶的問題 2006-09-21 16:22 布袋魚

          我的做法和南一郎一樣。
          在頁面顯示前,后臺先把form值設(shè)定好
          比如
          后臺:
          ModuleActionForm form = (ModuleActionForm) actionForm;
          form.setTbModule(new TbModule());
          form.setModuleClass_show("1");
          form.setModuleShow_show("1");
          return actionMapping.findForward("add");

          add找到config的頁面是這樣顯示
          <td align="right" class="TableLine2">模塊參數(shù):</td>
          <td class="TableLine1">
          <html:checkbox property="moduleClass_show" value = "1" />
          &nbsp;通用&nbsp;
          <html:checkbox property="moduleShow_show" value = "1" />
          &nbsp;顯示&nbsp;
          <html:checkbox property="moduleDisable_show" value = "1" />
          &nbsp;不可用&nbsp;
          <html:checkbox property="moduleCommon_show" value = "1" />
          &nbsp;常用模塊&nbsp; <font color="red">*</font>
          </td>  回復(fù)  更多評論   

          # re: Struts的html:checkBox標簽超郁悶的問題 2006-09-21 16:22 布袋魚

          這樣前2項默認選中
          后兩項非選中  回復(fù)  更多評論   

          # re: Struts的html:checkBox標簽超郁悶的問題 2006-12-05 12:23 chen[匿名]

          非常感謝  回復(fù)  更多評論   

          # re: Struts的html:checkBox標簽超郁悶的問題 2007-03-26 18:39 wellwei

          3Q  回復(fù)  更多評論   

          # re: Struts的html:checkBox標簽超郁悶的問題[未登錄] 2007-03-31 10:01 gavin

          3q  回復(fù)  更多評論   

          # re: Struts的html:checkBox標簽超郁悶的問題[未登錄] 2007-12-12 13:53 bobo

          value可以取出其值.
            回復(fù)  更多評論   

          # re: Struts的html:checkBox標簽超郁悶的問題 2008-08-16 14:33 lutsao

          我暈...還真行..耶..  回復(fù)  更多評論   

          # re: Struts的html:checkBox標簽超郁悶的問題[未登錄] 2009-03-23 23:34 null

          我試了。。好用

          支持樓主  回復(fù)  更多評論   

          <2006年4月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導(dǎo)航

          隨筆分類(125)

          文章分類(5)

          日本語

          搜索

          積分與排名

          最新隨筆

          最新評論

          主站蜘蛛池模板: 如皋市| 财经| 玉门市| 鹤壁市| 拉萨市| 女性| 黄陵县| 玉龙| 西吉县| 石屏县| 上犹县| 高邑县| 仪陇县| 肃宁县| 深圳市| 新乐市| 虹口区| 江安县| 洛浦县| 津市市| 昌都县| 台中县| 密山市| 分宜县| 揭东县| 类乌齐县| 嘉定区| 龙州县| 芦山县| 涪陵区| 吉隆县| 麻江县| 惠州市| 滕州市| 蓬莱市| 宣武区| 南江县| 威海市| 托克托县| 曲麻莱县| 布拖县|