qiyadeng

          專注于Java示例及教程
          posts - 84, comments - 152, trackbacks - 0, articles - 34

          Struts Checkbox radio怎么進行動態的選擇

          Posted on 2005-12-14 10:19 qiyadeng 閱讀(1942) 評論(0)  編輯  收藏 所屬分類: J2EE

          使用Struts的朋友,可能經常發現使用頁面的一些標簽的時候覺得不夠得心應手。比如我們要設計一個用戶修改得信息的界面,需要調出一些用戶的信息。不幸的是,當頁面中含有Checkbox或是radio的時候有沒有想過怎么處理?以前我也為這個苦惱,不少論壇上的人也發帖子問這個問題。最近看到了兩篇文章,可以解決這個問題。來自IBM developer:
          http://www-128.ibm.com/developerworks/java/library/j-sr3.html
          http://www-128.ibm.com/developerworks/java/library/j-sr4.html
          multibox.bmpradio.bmp
          先調簡單的說起吧,我們來實現動態的checkbox:
          1、Form的設計:我們這個例子有個String[] mountains,這個變量數組中包含很多的山的名字;還有個數組String[] selectedMountains就是默認選中的一些山,像下面這樣很簡單。

          public class MultiboxForm extends ActionForm {
           
           private String[] selectedMountains = {"Everest","K2","Lhotse","Cho Oyu"};
           private String[] mountains ={"Everest","K2","Kangchenjunga","Lhotse","Makalu","Kangchenjunga South","Lhotse Middle","Kangchenjunga West","Lhotse Shar","Cho Oyu"};

           public String[] getMountains() {
            return mountains;
           }
           public void setMountains(String[] mountains) {
            this.mountains = mountains;
           }
           public String[] getSelectedMountains() {
            return selectedMountains;
           }
           public void setSelectedMountains(String[] selectedMountains) {
            this.selectedMountains = selectedMountains;
           }

          2、Action的設計:這個就更簡單了,一句話,由控制器切換到視圖。

           return mapping.findForward("success");
          3、JSP的設計:

            <html:form action="/multibox" name="multiboxForm" type="qiya.deng.struts.form.MultiboxForm">
             <logic:iterate name="multiboxForm" property="mountains" id="mountain">
              <html:multibox property="selectedMountains">
               <bean:write name="mountain"/>
              </html:multibox>
              <bean:write name="mountain"/><br/>
             </logic:iterate>
             <br/>
             <html:submit/><html:cancel/>
            </html:form>
          這個相對比較復雜,也是比較中要的。<logic:iterate/>是迭代MultiboxForm中的mountians,
          <html:multibox property="selectedMountains">
           <bean:write name="mountain"/>
          </html:multibox>
          這個標簽的作用就是selecteDMountains的值和迭代的mountain值一致的時候就會選中。

          接下來說Radio,其實Form和Action部分都差不多,只是JSP頁面有點不一樣,Radio里面甚至牽涉到了JavaScript。
          1.From的設計:


           private String selectedMountain = "Kangchenjunga West";
           private String[] mountains ={"Everest","K2","Kangchenjunga","Lhotse","Makalu","Kangchenjunga South","Lhotse Middle","Kangchenjunga West","Lhotse Shar","Cho Oyu"};
           
           public String[] getMountains() {
            return mountains;
           }
           public void setMountains(String[] mountains) {
            this.mountains = mountains;
           }
           public String getSelectedMountain() {
            return selectedMountain;
           }
           public void setSelectedMountain(String selectedMountain) {
            this.selectedMountain = selectedMountain;
           }
          2.Action同上一樣,切換到JSP頁面去。 
          3.重點部分JSP:

            <html:form action="/radio" name="radioForm" type="qiya.deng.struts.form.RadioForm">
             <bean:define id="selectedRadio" property="selectedMountain" name="radioForm"></bean:define>
             <logic:iterate id="mountain" property="mountains" name="radioForm">
              <bean:define id="mountainValue">
               <bean:write name="mountain"/>
              </bean:define>
              <html:radio property="selectedMountain" value="<%=mountainValue%>" styleId="<%=mountainValue%>"/>
              <bean:write name="mountain"/><br/>
             </logic:iterate><br/>
             <html:submit/><html:cancel/>
             <script type="text/javascript">
                       <!--
                    var selectedRadio =
                       document.forms["radioForm"].elements["<bean:write name="selectedRadio"/>"];
                        selectedRadio.checked=true;
                       -->
                   </script>
            </html:form>


          "<bean:define/>"定義了一個PageContext作用域的屬性selectedRadio,下面的JavaScript的作用就是根據這個屬性找到應該選中的Radio。其他的地方和上面那個很相似的。如果還是不太理解先運行,看看生成的HTML代碼。

          主站蜘蛛池模板: 和林格尔县| 夏津县| 维西| 香河县| 蓬莱市| 綦江县| 临猗县| 咸丰县| 永胜县| 永仁县| 合水县| 泾阳县| 西贡区| 玉龙| 乐平市| 新兴县| 仁寿县| 庆城县| 会泽县| 文成县| 达拉特旗| 陈巴尔虎旗| 锡林浩特市| 辛集市| 竹北市| 张家川| 孟村| 大新县| 吉木萨尔县| 凤冈县| 静安区| 贺州市| 方山县| 台北县| 正蓝旗| 新野县| 宾阳县| 临潭县| 锡林郭勒盟| 陆川县| 沐川县|