`

關於dwr框架與spring結合的三級聯動的例子

阅读更多
最近做個案子,需要三級聯動的效果,不多說以下是例子的配置以及代碼,希望對大家有幫助

web.xml
<!--  Spring 服务层的配置文件 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/applicationContext.xml
            /WEB-INF/applicationContext-security.xml
            /WEB-INF/applicationContext-quartz.xml
        </param-value>
    </context-param>
    <!--  Spring 容器启动监听器 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
      <servlet-name>dwr-invoker</servlet-name>
      <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
      <init-param>
         <param-name>debug</param-name>
          <param-value>true</param-value>
       </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>dwr-invoker</servlet-name>
        <url-pattern>/dwr/*</url-pattern>
</servlet-mapping>


dwr.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 0.4//EN" "http://www.getahead.ltd.uk/dwr/dwr.dtd">
<dwr>
  <allow>
    <create creator="spring" javascript="channel">
      <param name="beanName" value="DWRChannel"/>
    </create>
    <convert converter="bean" match="com.healthcare.bean.HCClass01" />
    <convert converter="bean" match="com.healthcare.bean.HCClass02" />
    <convert converter="bean" match="com.healthcare.bean.HCClass03" />
</allow>
</dwr>


Channel.java
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.healthcare.controller;

import com.healthcare.bean.HCClass01;
import com.healthcare.bean.HCClass02;
import com.healthcare.bean.HCClass03;
import com.healthcare.dao.HCClass01Dao;
import com.healthcare.dao.HCClass02Dao;
import com.healthcare.dao.HCClass03Dao;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;

/**
 *
 * @author lam
 */
public class Channel {
    
    @Autowired
    private  HCClass01Dao class01Dao;
    @Autowired
    private  HCClass02Dao class02Dao;
    @Autowired
    private  HCClass03Dao class03Dao;
    
    /**  
     * 根据一階编号获取二階
     * @param id  
     *            一階编号  
     * @return List<HCClass02><br>  
     */  
    public  Map getHCClass02sByHCClass01Id(String id) {   
        List<HCClass02> hCClass02s = null;
        
        if (class02Dao == null)
        {
            System.out.println("hCClass02Dao is null");
        }
        Map map = new HashMap();
        System.out.println("HCClass01ID:=========="+ id);
        if (!StringUtils.isEmpty(id)) {
            hCClass02s = class02Dao.getHCClass02ByHCClass01Id(id);
        }
        for (int i = 0; i < hCClass02s.size(); i++)
        {
            HCClass02 class02 = (HCClass02)hCClass02s.get(i);
            map.put(class02.getId(), class02.getName());
        }
        return map;
    }
    
    /**  
     * 根据二階编号获取三階
     * @param id  
     *            二階编号  
     * @return List<HCClass03><br>  
     */
    public Map getHCClass03sByHCClass02Id(String id) {   
        List<HCClass03> hCClass03s = null;
        Map map = new HashMap();
        System.out.println("HCClass02ID:=========="+ id);
        if (!StringUtils.isEmpty(id)) {
            hCClass03s = class03Dao.getHCClass03ByHCClass02Id(id);
        }
        for (int i = 0; i < hCClass03s.size(); i++)
        {
            HCClass03 class03 = (HCClass03)hCClass03s.get(i);
            map.put(class03.getId(), class03.getName());
        }
        return map;
    }
    
    public HCClass01Dao getClass01Dao() {
        return class01Dao;
    }
    public void setClass01Dao(HCClass01Dao class01Dao) {
        this.class01Dao = class01Dao;
    }
    
    public HCClass02Dao getClass02Dao() {
        return class02Dao;
    }
    public void setClass02Dao(HCClass02Dao class02Dao) {
        this.class02Dao = class02Dao;
    }
    
    public HCClass03Dao getClass03Dao() {
        return class03Dao;
    }
    public void setClass03Dao(HCClass03Dao class03Dao) {
        this.class03Dao = class03Dao;
    }
}


applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
    
    <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
    <bean id="propertyConfigurer"
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
          p:location="/WEB-INF/jdbc.properties" />
    
    <bean id="dataSource"
          class="org.springframework.jdbc.datasource.DriverManagerDataSource"
          p:driverClassName="${jdbc.driverClassName}"
          p:url="${jdbc.url}"
          p:username="${jdbc.username}"
          p:password="${jdbc.password}"/>
              
    <!-- ADD PERSISTENCE SUPPORT HERE (jpa, hibernate, etc) -->
    <bean id="entityManagerFactory"  
          class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource"/>  
        <property name="jpaVendorAdapter">  
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="database" value="MYSQL" />  
                <property name="showSql" value="false" />  
            </bean>  
        </property>  
        <property name="jpaPropertyMap">
            <map>
                <entry key="formatSql" value="true"/>
            </map>
        </property>
        <property name="persistenceUnitName" value="hc-unit" />
    </bean>  
    <bean id="transactionManager"  
          class="org.springframework.orm.jpa.JpaTransactionManager">  
        <property name="entityManagerFactory" ref="entityManagerFactory" />  
    </bean>
    <tx:annotation-driven transaction-manager="transactionManager" /> 
    
    <bean class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor" />
    
    <bean id="hCClass01Dao" class="com.healthcare.dao.impl.HCClass01DaoImpl"/>
    <bean id="hCClass02Dao" class="com.healthcare.dao.impl.HCClass02DaoImpl"/>
    <bean id="hCClass03Dao" class="com.healthcare.dao.impl.HCClass03DaoImpl"/>
    <bean id="DWRChannel" class="com.healthcare.controller.Channel">
        <property name="class01Dao">
            <ref bean="hCClass01Dao" />
        </property>
        <property name="class02Dao">
            <ref bean="hCClass02Dao" />
        </property>
        <property name="class03Dao">
            <ref bean="hCClass03Dao" />
        </property>
    </bean>
</beans>



<script type='text/javascript' src='dwr/interface/channel.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
  
<script language="javascript">   
    // 根据选择的省,获得其所辖的市   
        function getHCClass02_1(){   
            var obj_class01 = document.getElementById("sel_class01_1");   
            var obj_class02 = document.getElementById("sel_class02_1");   
            var obj_class03 = document.getElementById("sel_class03_1");   
            var class01_Index = obj_class01.selectedIndex;   
            var class01_Value = obj_class01.options[class01_Index].value;
            if(class01_Value != "" && class01_Value != null){   
                channel.getHCClass02sByHCClass01Id(class01_Value,class02Return_1);   
            }else{
                DWRUtil.removeAllOptions(obj_class02);   
                DWRUtil.addOptions(obj_class02,{'':'請選擇'});   
                DWRUtil.removeAllOptions(obj_class03);   
                DWRUtil.addOptions(obj_class03,{'':'請選擇'});   
            }
			DWRUtil.removeAllOptions(obj_class03);   
            DWRUtil.addOptions(obj_class03,{'':'請選擇'});
        }   
		// 回调函数   
        function class02Return_1(data){   
            var obj_class02 = document.getElementById("sel_class02_1");   
            DWRUtil.removeAllOptions(obj_class02);   
            DWRUtil.addOptions(obj_class02,{'':'請選擇'});   
            DWRUtil.addOptions(obj_class02,data);   
        } 
		function getHCClass02_2(){   
            var obj_class01 = document.getElementById("sel_class01_2");   
            var obj_class02 = document.getElementById("sel_class02_2");   
            var obj_class03 = document.getElementById("sel_class03_2");   
            var class01_Index = obj_class01.selectedIndex;   
            var class01_Value = obj_class01.options[class01_Index].value;
            if(class01_Value != "" && class01_Value != null){   
                channel.getHCClass02sByHCClass01Id(class01_Value,class02Return_2);   
            }else{
                DWRUtil.removeAllOptions(obj_class02);   
                DWRUtil.addOptions(obj_class02,{'':'請選擇'});   
                DWRUtil.removeAllOptions(obj_class03);   
                DWRUtil.addOptions(obj_class03,{'':'請選擇'});   
            }
			DWRUtil.removeAllOptions(obj_class03);   
            DWRUtil.addOptions(obj_class03,{'':'請選擇'});
        }   
    	// 回调函数   
        function class02Return_2(data){   
            var obj_class02 = document.getElementById("sel_class02_2");   
            DWRUtil.removeAllOptions(obj_class02);   
            DWRUtil.addOptions(obj_class02,{'':'請選擇'});   
            DWRUtil.addOptions(obj_class02,data);   
        }   
    // 根据选择的市,获得所辖的县   
        function getHCClass03_1(){   
            var obj_class01 = document.getElementById("sel_class01_1");   
            var obj_class02 = document.getElementById("sel_class02_1");   
            var obj_class03 = document.getElementById("sel_class03_1");   
            var class02_Index = obj_class02.selectedIndex;   
            var class02_Value = obj_class02.options[class02_Index].value;   
            if(class02_Value != "" && class02_Value != null){   
                channel.getHCClass03sByHCClass02Id(class02_Value,class03Return_1);   
            }else{   
                DWRUtil.removeAllOptions(obj_class03);   
                DWRUtil.addOptions(obj_class03,{'':'請選擇'});   
            }   
        }   
		// 回调函数   
        function class03Return_1(data){   
            var obj_class03 = document.getElementById("sel_class03_1");
            DWRUtil.removeAllOptions(obj_class03);   
            DWRUtil.addOptions(obj_class03,{'':'請選擇'});   
            DWRUtil.addOptions(obj_class03,data);   
        }
		function getHCClass03_2(){   
            var obj_class01 = document.getElementById("sel_class01_2");   
            var obj_class02 = document.getElementById("sel_class02_2");   
            var obj_class03 = document.getElementById("sel_class03_2");   
            var class02_Index = obj_class02.selectedIndex;   
            var class02_Value = obj_class02.options[class02_Index].value;   
            if(class02_Value != "" && class02_Value != null){   
                channel.getHCClass03sByHCClass02Id(class02_Value,class03Return_2);   
            }else{   
                DWRUtil.removeAllOptions(obj_class03);   
                DWRUtil.addOptions(obj_class03,{'':'請選擇'});   
            }   
        }   
    // 回调函数   
        function class03Return_2(data){   
            var obj_class03 = document.getElementById("sel_class03_2");
            DWRUtil.removeAllOptions(obj_class03);   
            DWRUtil.addOptions(obj_class03,{'':'請選擇'});   
            DWRUtil.addOptions(obj_class03,data);   
        }
</script>

<tr>
        <td height="25" valign="top" class="R_title_font"><div align="right">所屬頻道</div></td>
        <td height="25" colspan="4" bgcolor="#FFFFCC" class="Rmenu_onetitle">
		<select name="hCClass01Id1" id="sel_class01_1" onchange="getHCClass02_1()">
				<option value="">請選擇</option>
			<c:forEach items="${hCClass01s}" var="hCClass01">
				<option value="${hCClass01.id}">${hCClass01.name}</option>
            </c:forEach>
		</select>
		<select name="hCClass02Id1" id="sel_class02_1" onchange="getHCClass03_1()">
				<option value="">請選擇</option>
		</select>
		<select name="hCClass03Id1" id="sel_class03_1">
				<option value="">請選擇</option>
		</select>
		</td>
	</tr>
	<tr>
		<td height="25" valign="top" class="R_title_font"><div align="right">所屬頻道</div></td>
        <td height="25" colspan="4" bgcolor="#FFFFCC" class="Rmenu_onetitle">
		<select name="hCClass01Id2" id="sel_class01_2" onchange="getHCClass02_2()">
				<option value="">請選擇</option>
			<c:forEach items="${hCClass01s}" var="hCClass01">
				<option value="${hCClass01.id}">${hCClass01.name}</option>
            </c:forEach>
		</select>
		<select name="hCClass02Id2" id="sel_class02_2" onchange="getHCClass03_2()">
				<option value="">請選擇</option>
		</select>
		<select name="hCClass03Id2" id="sel_class03_2">
				<option value="">請選擇</option>
		</select>
		</td>
      </tr>



此例子意在說明dwr與spring結合的配置,在Channel.java類中所定義的Dao,在applicationContext.xml中的配置
如此例Channel中定義:
@Autowired
    private  HCClass01Dao class01Dao;
    @Autowired
    private  HCClass02Dao class02Dao;
    @Autowired
    private  HCClass03Dao class03Dao;

以及在applicationContext.xml中的配置
<bean id="hCClass01Dao" class="com.healthcare.dao.impl.HCClass01DaoImpl"/>
    <bean id="hCClass02Dao" class="com.healthcare.dao.impl.HCClass02DaoImpl"/>
    <bean id="hCClass03Dao" class="com.healthcare.dao.impl.HCClass03DaoImpl"/>
<bean id="DWRChannel" class="com.healthcare.controller.Channel">
        <property name="class01Dao">
            <ref bean="hCClass01Dao" />
        </property>
        <property name="class02Dao">
            <ref bean="hCClass02Dao" />
        </property>
        <property name="class03Dao">
            <ref bean="hCClass03Dao" />
        </property>
    </bean>
分享到:
评论

相关推荐

    三级联动(DWR框架,hibernate)

    **标题解析:**“三级联动(DWR框架,hibernate)”指的是在Web开发中,使用Direct Web Remoting (DWR) 框架与Hibernate ORM工具实现的一种数据交互和展示方式。三级联动通常指的是在三个下拉列表中,前一个列表的...

    DWR实现省市县三级联动小例子

    标题 "DWR实现省市县三级联动小例子" 暗示了这个压缩包可能包含一个使用Direct Web Remoting (DWR) 技术构建的示例项目,该示例展示了如何实现在网页上进行省、市、县三级联动选择的功能。这种功能在很多中国的网站...

    ajax dwr 框架实现二级联动下拉列表源码

    **Ajax DWR 框架实现二级联动下拉列表源码详解** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。DWR(Direct Web Remoting)则是一个用于Java web应用的开源...

    dwr框架实现二级菜单联动

    在IT领域的开发中,利用DWR(Direct Web Remoting)框架结合Ajax技术实现二级菜单的联动,是一项常见的功能需求,尤其是在动态网页应用中。本文将深入解析如何在包含Spring、Hibernate、Ajax、DWR等技术栈的项目中,...

    dwr与spring集成的方式

    #### 三、DWR与Spring集成的方式 ##### 第一种方式:在dwr.xml中指定Spring Bean 这种方式是在DWR的配置文件dwr.xml中指定业务对象的创建方式为Spring,并提供该对象在Spring容器中的ID。具体步骤如下: 1. **...

    DWR+Struts+Hibernate+Spring 三级联动菜单

    此项目结合了DWR(Direct Web Remoting)、Struts、Hibernate和Spring四大技术框架,旨在创建一个动态的三级联动菜单,通过Ajax实现数据的实时更新,提高用户体验。 首先,DWR是一个强大的JavaScript库,它允许...

    Spring与DWR结合

    **Spring与DWR结合** Spring框架是Java领域中广泛使用的轻量级应用框架,它提供了依赖注入、面向切面编程、事务管理等核心功能,帮助开发者构建可维护性高、可扩展性强的企业级应用程序。而Direct Web Remoting ...

    DWR结合spring例子(可用)

    将DWR与Spring结合使用,可以构建出更高效、更灵活的Web应用。 在这个例子中,我们将会探讨如何将DWR与Spring集成,创建一个可运行的示例。首先,我们需要在项目中添加DWR和Spring的相关依赖。这通常通过Maven或...

    使用dwr+spring实现消息推送

    将DWR与Spring结合,可以创建出高效且易于维护的消息推送系统。首先,我们需要在Spring配置中声明DWR的相关bean,包括`DWRConfiguration`、`CatalinaReverseAjaxServlet`以及应用中定义的远程服务接口。这些配置通常...

    DWR与SPRING 集成

    标题 "DWR与SPRING 集成" 涉及到的是两个在Web开发中常用的开源框架——Direct Web Remoting (DWR) 和 Spring。DWR允许在浏览器和服务器之间进行实时、异步的数据交换,而Spring是Java企业级应用的全面解决方案,...

    dwr+springJdbc例子

    本示例"dwrspringjdbc"探讨了如何将Direct Web Remoting (DWR)、Spring框架和Java Database Connectivity (JDBC)有效地结合在一起。这三个技术在Web开发中扮演着重要的角色,下面将分别介绍它们的核心概念和在项目中...

    关于dwr2与spring2集成

    在DWR2中,与Spring2框架的集成可以让开发者充分利用Spring的依赖注入、事务管理等优势,同时利用DWR的异步AJAX能力,创建出更加灵活、响应式的用户界面。 集成DWR2和Spring2的关键在于配置和组件的绑定。首先,...

    DWR实现省市县三级联动

    在介绍的省市县三级联动的例子中,通过DWR与AJAX的结合使用,可以实现用户在选择一个省级别之后,页面能够动态地加载并显示该省份下属的所有市级选项。同样地,再选择一个市级之后,页面能够加载并显示该市下属的...

    spring这个是关于SPRING结合DWR的例子哦。

    以下是对标题和描述中提到的“关于Spring结合DWR的例子”的深入解析: #### 配置Web.xml 在Web应用中,需要在`web.xml`文件中配置DWR的servlet。这是因为DWR通过一个名为`DWRServlet`的servlet来处理所有来自...

    dwr与spring整合

    **DWR(Direct Web Remoting)与Spring框架的整合** DWR是一款开源的Java库,它允许在浏览器和服务器之间进行动态、实时的双向通信,实现了JavaScript与Java之间的远程调用。Spring则是一个广泛使用的Java企业级...

    dwr写的省市县三级联动

    《DWR实现的省市县三级联动与Oracle数据库的结合》 在现代Web开发中,为了提供用户友好的界面,常需要实现如省市县三级联动的功能,即用户选择一个省份后,下拉菜单自动加载该省份对应的市,接着选择市后,再加载...

    DWR与SPRING,DWR与STRUTS2的整合

    提供的文档“dwr与spring.doc”和“dwr与struts2.doc”可能详细阐述了整合过程和最佳实践,而“一个小例子.txt”可能包含了一个实际整合示例,帮助读者更好地理解整合步骤和实现方式。学习并掌握这些知识对于提升...

    DWR示例与spring集成

    4. **安全控制**:结合Spring Security,可以对DWR的访问进行权限控制。 在实际开发中,DWR示例可能包含以下内容: - **HelloWorld示例**:展示如何设置DWR并实现简单的客户端-服务器通信。 - **对象传递示例**:...

    AJAX 与 DWR框架

    DWR可以轻松地与流行的Java框架如Struts和Spring集成。在Struts中,DWR可以作为Action的补充,提供异步功能。在Spring框架中,DWR可以通过Spring的AOP(面向切面编程)和依赖注入特性,更好地管理服务器端的Java对象...

Global site tag (gtag.js) - Google Analytics