<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    我的漫漫程序之旅

    專注于JavaWeb開發(fā)
    隨筆 - 39, 文章 - 310, 評(píng)論 - 411, 引用 - 0
    數(shù)據(jù)加載中……

    純JSP+DWR實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)下拉選擇菜單

    網(wǎng)上看到一些例子,對(duì)于一個(gè)簡(jiǎn)單的三級(jí)聯(lián)動(dòng),都加上什么Struts,
    Hibernate諸如此類的框架。這個(gè)Ajax聯(lián)動(dòng)殊不知和這些框架有什么
    關(guān)系,一個(gè)小Demo干嘛整得那么大。

    今天我做了一個(gè)dwr+jsp做的例子。

    web.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation
    ="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    >
        
    <servlet>
            
    <servlet-name>dwr-invoker</servlet-name>
            
    <servlet-class>
                org.directwebremoting.servlet.DwrServlet
            
    </servlet-class>
            
    <init-param>
                
    <param-name>debug</param-name>
                
    <param-value>true</param-value>
            
    </init-param>
        
    </servlet>
      
    <servlet>
        
    <servlet-name>SelectServlet</servlet-name>
        
    <servlet-class>com.action.SelectServlet</servlet-class>
      
    </servlet>

        
    <servlet-mapping>
            
    <servlet-name>dwr-invoker</servlet-name>
            
    <url-pattern>/dwr/*</url-pattern>
        
    </servlet-mapping>
      
    <servlet-mapping>
        
    <servlet-name>SelectServlet</servlet-name>
        
    <url-pattern>/select</url-pattern>
      
    </servlet-mapping>

        
    <welcome-file-list>
            
    <welcome-file>index.jsp</welcome-file>
        
    </welcome-file-list>
    </web-app>

    dwr.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 
    2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd"
    >

    <dwr>

        
    <!-- 沒有它DWR什么也做不了 -->
        
    <allow>
            
    <create creator="new" javascript="menu">
                
    <param name="class" value="com.dao.CountryDAO" />
            
    </create>
            
    <!-- 要轉(zhuǎn)換的Bean -->
             
    <convert converter="bean" match="com.vo.Country" />
             
    <convert converter="bean" match="com.vo.Province" />
             
    <convert converter="bean" match="com.vo.City" />
        
    </allow>
    </dwr>
    test.jsp:
    <%@ page language="java" import="java.util.*,com.vo.*"
        pageEncoding
    ="GBK"
    %>
    <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
    <html>
        
    <head>
            
    <title>DWR三級(jí)聯(lián)動(dòng)</title>
            
    <script type='text/javascript'
                
    src='/mutiplyMenu/dwr/interface/menu.js'></script>
            
    <script type='text/javascript' src='/mutiplyMenu/dwr/engine.js'></script>
            
    <script type='text/javascript' src='/mutiplyMenu/dwr/util.js'></script>
        
    </head>

        
    <body>
            
    <script type="text/javascript">
        
    //根據(jù)國(guó)家id查詢所屬省或州
        function queryProvince()
        
    {
            
    var countryId = $("country").value;
            
    //默認(rèn)為不選擇
            if(countryId == 0)
            
    {
                $
    {"province"}.options.length=0;
                $
    {"city"}.options.length=0;
            }

            
    else
            
    {
                menu.queryProvinceById(countryId,provinceCallback);
            }
        
        }

        
    //根據(jù)國(guó)家id查詢所屬省或州的回調(diào)函數(shù)
        function provinceCallback(provinces)
        
    {
          $
    {"province"}.options.length=0;
          
    //每次獲得新的數(shù)據(jù)的時(shí)候先把每二個(gè)下拉框架的長(zhǎng)度清0
          for(var i=0;i< provinces.length;i ++){
            
    var value = provinces[i].id;
            
    var text = provinces[i].provinceName;
            
    var option = new Option(text, value);
            
    //根據(jù)每組value和text標(biāo)記的值創(chuàng)建一個(gè)option對(duì)象
            try{
              $(
    "province").add(option);//將option對(duì)象添加到第二個(gè)下拉框中
            }
    catch(e){
            }

          }

          
    //同時(shí)關(guān)聯(lián)第三級(jí)
          var provinceId = ${"province"}.value;
          menu.queryCityById(provinceId,cityCallback);
        }

        
    //查詢所屬城市
        function queryCity()
        
    {
            
    var provinceId = $("province").value;
            menu.queryCityById(provinceId,cityCallback);
        }

        
    //查詢所屬城市回調(diào)函數(shù)
        function cityCallback(citys)
        
    {
          
    //每次獲得新的數(shù)據(jù)的時(shí)候先把每三個(gè)下拉框架的長(zhǎng)度清0
          ${"city"}.options.length=0;
          
    for(var i=0;i< citys.length;i ++){
            
    var value = citys[i].id;
            
    var text = citys[i].cityName;
            
    var option = new Option(text, value);
            
    //根據(jù)每組value和text標(biāo)記的值創(chuàng)建一個(gè)option對(duì)象
            try{
              $(
    "city").add(option);//將option對(duì)象添加到第三個(gè)下拉框中
            }
    catch(e){
            }

          }

        }

        
        
    function change1()
        
    {
            queryProvince();
        }

        
        
    function change2()
        
    {
            queryCity();
        }

    </script>
            
    <div align="center">
                
    <h3>
                    
    <br>
                
    </h3>
                
    <h3>
                    DWR三級(jí)聯(lián)動(dòng)演示
                
    </h3>
                
    <!-- 我都奇怪了,我的<c>標(biāo)簽在這里不能用 -->
                
    <select id="country" onchange="change1();">
                    
    <option selected="selected" value="0">
                        請(qǐng)選擇
                    
    </option>
                    
    <%
                        @SuppressWarnings(
    "unchecked")
                        List list 
    = (List) request.getAttribute("countrys");
                        
    for (int i = 0; i < list.size(); i++)
                        {
                            Country temp 
    = (Country) list.get(i);
                    
    %>
                    
    <option value="<%=temp.getId()%>"><%=temp.getCountryName()%></option>
                    
    <%
                        }
                    
    %>
                
    </select>

                
    <select id="province" onchange="change2();">

                
    </select>


                
    <select id="city">
                
    </select>
            
    </div>
        
    </body>
    </html>

    servlet,dao就不帖了,想了解的可以去下載源碼。點(diǎn)此下載

    posted on 2008-05-29 11:59 々上善若水々 閱讀(4698) 評(píng)論(2)  編輯  收藏 所屬分類: AJAX

    評(píng)論

    # re: 純JSP+DWR實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)下拉選擇菜單[未登錄]  回復(fù)  更多評(píng)論   

    強(qiáng)~下來學(xué)習(xí)學(xué)習(xí)。
    2008-05-30 17:47 | 草兒

    # re: 純JSP+DWR實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)下拉選擇菜單  回復(fù)  更多評(píng)論   

    這么下載不了源碼啊
    2010-01-21 16:48 | 王利
    主站蜘蛛池模板: 亚洲色少妇熟女11p| 中文字幕在线观看亚洲| 亚洲日产韩国一二三四区| 亚洲国产精品高清久久久| 久久亚洲精精品中文字幕| 亚洲乱码在线播放| 亚洲成av人无码亚洲成av人| 狠狠热精品免费观看| 9久热这里只有精品免费| 无码国产精品一区二区免费式芒果| 国产亚洲一区二区三区在线| 亚洲AV无码精品无码麻豆| 亚洲伊人久久大香线蕉影院| 成人亚洲国产精品久久| 精品免费久久久久国产一区| 99ee6热久久免费精品6| 免费精品一区二区三区在线观看| 亚洲国产精品碰碰| 亚洲成AV人片在| jiz zz在亚洲| 亚洲精品视频免费观看| 亚洲香蕉免费有线视频| 免费不卡中文字幕在线| 亚洲av不卡一区二区三区| 亚洲私人无码综合久久网| 波霸在线精品视频免费观看| 国产成人yy免费视频| 亚洲国产中文字幕在线观看| 久久丫精品国产亚洲av| 美女被免费网站在线视频免费| A片在线免费观看| 免费观看a级毛片| 亚洲女同成av人片在线观看| 亚洲精品午夜国产va久久| XXX2高清在线观看免费视频| 中国在线观看免费高清完整版| 亚洲自偷自偷图片| 亚洲中文字幕无码爆乳app| a级成人毛片免费视频高清| 午夜免费福利在线观看| 国产亚洲精品美女久久久|