qiyadeng

          專(zhuān)注于Java示例及教程
          posts - 84, comments - 152, trackbacks - 0, articles - 34

           這也是個(gè)開(kāi)源的標(biāo)簽庫(kù)^_^,因?yàn)槔贤饪偸呛軐?zhuān)業(yè)些寫(xiě)了很多好東西,可是我基本上是和他們相反,即沒(méi)有時(shí)間也比較懶得。Struts-layout是一個(gè)用來(lái)擴(kuò)充Struts的html標(biāo)簽的作用的,我以前寫(xiě)過(guò)(blog里)了怎么安裝使用的,這里就不說(shuō)了。
          layoutselect.bmp
          1.這次我們先看JSP的結(jié)構(gòu):


            <head>
              <script src="/WebSample/config/javascript.js"></script>
            </head>
           
            <body>
            <html:form action="/country.do">
              <layout:select key="Country" property="countryId">    
            <layout:option value=""/>
            <layout:options collection="countries" property="countryId" labelProperty="name" sourceOf="cityId"/>
           </layout:select>
           
           <layout:select key="City" property="cityId">
            <layout:optionsDependent collection="cities" property="cityId" labelProperty="cityName" dependsFrom="countryId"/>
           </layout:select>
           <html:submit /><html:reset />
            </html:form> 
            </body>
          兩個(gè)select,其中第二個(gè)是<layout:optionsDependent/>它的dependsFrom的屬性需要和上面的那個(gè)select的property一致。countries是在request域的一個(gè)collection,而cities是countries的一個(gè)屬性,但是類(lèi)型也是collection。
          2.Action:你需要Action來(lái)初始化countries,

           public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) { 
            List countries = new ArrayList();
            for(int i = 0 ;i< 10 ;i++){
             Country c = new Country();
             c.setCountryId(new Integer(i));
             c.setName("country"+i);
             for(int j = 0;j< 5 ;j++){
              c.addCity("city"+i+j,new Integer(i*10+j));
             }
             countries.add(c);
            }
            request.setAttribute("countries",countries);
            return mapping.findForward("success");
           }
          這樣你基本上就好了,夠簡(jiǎn)單吧!下面還有兩個(gè)類(lèi)的結(jié)構(gòu)就是Country類(lèi)和CityBean類(lèi):
          Country類(lèi):3個(gè)如下屬性,外加Setter/Getter方法。
           private String name;
           private List cities = new ArrayList();
           private Integer countryId;
          CityBean類(lèi):2個(gè)如下屬性,外加Setter/Getter方法。
           private Integer cityId;
           private String cityName;
          這些東西你當(dāng)然還可以和數(shù)據(jù)庫(kù)結(jié)合起來(lái)使用,或是和XML文件結(jié)合起來(lái)使用。基本上一個(gè)應(yīng)用最要需要考慮好
          類(lèi)似Country類(lèi)這個(gè)結(jié)構(gòu)就可以了。

          這個(gè)標(biāo)簽的方法是把所有的數(shù)據(jù)都會(huì)寫(xiě)入到html文件中,并寫(xiě)入相應(yīng)的JavaScript,你可以查看源碼。


          <script>var countries = new Array();
          countries[0] = new Object();
          countries[0].value = "0";
          countries[0].cities = new Array();
          countries[0].cities[0] = new Object();
          countries[0].cities[0].value = "0";
          countries[0].cities[0].label = "city00";
          countries[0].cities[1] = new Object();
          countries[0].cities[1].value = "1";
          countries[0].cities[1].label = "city01";
          countries[0].cities[2] = new Object();
          countries[0].cities[2].value = "2";
          countries[0].cities[2].label = "city02";
          countries[0].cities[3] = new Object();
          countries[0].cities[3].value = "3";
          countries[0].cities[3].label = "city03";
          countries[0].cities[4] = new Object();
          countries[0].cities[4].value = "4";
          countries[0].cities[4].label = "city04"
          .....
          </script>

          個(gè)人總結(jié),水平有限。主要是最近在論壇里看到不少關(guān)于這方面的問(wèn)題,然后有沒(méi)有最后的答案,所以借助開(kāi)源標(biāo)簽可以做到通用性,希望對(duì)您有所幫助。


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 两当县| 蚌埠市| 萨迦县| 青冈县| 翁牛特旗| 红桥区| 合川市| 长子县| 东阿县| 海淀区| 凤阳县| 钦州市| 双辽市| 永州市| 米林县| 碌曲县| 图木舒克市| 滦平县| 鄂尔多斯市| 久治县| 西青区| 三原县| 云阳县| 蒙阴县| 湖口县| 巨鹿县| 康乐县| 阳谷县| 嘉荫县| 红河县| 子长县| 孝感市| 林口县| 湘阴县| 多伦县| 崇左市| 洛扎县| 阿坝| 孙吴县| 郸城县| 东莞市|