纯JSP+DWR实现三级联动下拉选择菜单

 

纯JSP+DWR实现三级联动下拉选择菜单

 

原文地址 

网上看到一些例子,对于一个简单的三级联动,都加上什么Struts,
Hibernate诸如此类的框架。这个Ajax联动殊不知和这些框架有什么
关系,一个小Demo干嘛整得那么大。

今天我做了一个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 >
        
<!--  要转换的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三级联动 </ 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" >
    
//根据国家id查询所属省或州
    function queryProvince()
    
{
        
var countryId = $("country").value;
        
//默认为不选择
        if(countryId == 0)
        
{
            $
{"province"}.options.length=0;
            $
{"city"}.options.length=0;
        }

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

    
//根据国家id查询所属省或州的回调函数
    function provinceCallback(provinces)
    
{
      $
{"province"}.options.length=0;
      
//每次获得新的数据的时候先把每二个下拉框架的长度清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);
        
//根据每组value和text标记的值创建一个option对象
        try{
          $(
"province").add(option);//将option对象添加到第二个下拉框中
        }
catch(e){
        }

      }

      
//同时关联第三级
      var provinceId = ${"province"}.value;
      menu.queryCityById(provinceId,cityCallback);
    }

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

    
//查询所属城市回调函数
    function cityCallback(citys)
    
{
      
//每次获得新的数据的时候先把每三个下拉框架的长度清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);
        
//根据每组value和text标记的值创建一个option对象
        try{
          $(
"city").add(option);//将option对象添加到第三个下拉框中
        }
catch(e){
        }

      }

    }

    
    
function change1()
    
{
        queryProvince();
    }

    
    
function change2()
    
{
        queryCity();
    }

</ script >
        
< div  align ="center" >
            
< h3 >
                
< br >
            
</ h3 >
            
< h3 >
                DWR三级联动演示
            
</ h3 >
            
<!--  我都奇怪了,我的<c>标签在这里不能用  -->
            
< select  id ="country"  onchange ="change1();" >
                
< option  selected ="selected"  value ="0" >
                    请选择
                
</ 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就不帖了,想了解的可以去下载源码。 点此下载
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值