DWR2整合SPRIN1.2.8,HIBERNATE3实现下拉联动

本文介绍如何使用DWR2与Spring框架结合,通过Hibernate进行数据操作,实现网页上的下拉列表联动功能。文章详细展示了配置过程,包括Web.xml、dwr.xml等文件的设置,并提供了关键的Java代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DWR2整合SPRIN1.2.8,HIBERNATE3实现下拉联动

1.下载DWR2,把dwr.jar拷贝到工程的lib目录下

以下按步骤看...

/**
 *Feb 23, 2007
 * Zhou JianGuo
 * 小白
 * 中国电信上海技术研究院
 * MSN:zhuojianguo_leo@hotmail.com
 */

Web.xml

 
  <!-- AJAX DWR2 -->
   <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> 
        <init-param>
        <param-name>pollAndCometEnabled</param-name>
        <param-value>true</param-value>
     </init-param>
     <init-param>
        <param-name>allowGetForSafariButMakeForgeryEasier</param-name>
       <param-value>true</param-value>
     </init-param>
        <load-on-startup>1</load-on-startup> 
    </servlet>
    <!-- Ajax DWR2拦截 -->
    <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 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd"> 
<dwr> 
    <allow> 
    <!-- 联动菜单-->
    <create creator="spring" javascript="SelectDAO">
      <param name="beanName" value="selectDAO"/>
      <param name="location1" value="../applicationContext/select.xml"></param>
      <param name="location2" value="../applicationContext/applicationContext.xml"></param>
    </create>

    </allow>
</dwr>

select.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
 <!-- select -->
 <bean id="selectDAO" class="com.procedure.util.select.SelectDAO" >
  <property name="selectServiceImpl">
   <ref bean="SelectServiceImpl" />
  </property>
 </bean>
 <bean id="SelectServiceImpl" parent="baseTransactionProxy">
  <property name="target">
   <ref local="SelectServiceImplTarget" />
  </property>
 </bean>

 <bean id="SelectServiceImplTarget" class="com.procedure.org.framework.service.select.SelectServiceImpl">
  <property name="commonDAO">
   <ref bean="commonDAO" />
  </property> 
 </bean>
</beans>

applicationContext.xml是主要的事务管理什么的,不贴了

SelectDAO.java

/**
 *Feb 27, 2007
 * Zhou JianGuo
 * 小白
 * 中国电信上海技术研究院
 * MSN:zhuojianguo_leo@hotmail.com
 */
package com.procedure.util.select;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.procedure.hibernate.SessionFactory.HibernateSessionFactory;
import com.procedure.hibernate.oracle10.getHibernateTemplate.model.VideoArea;
import com.procedure.org.framework.service.select.SelectService;

/**
 *Feb 27, 2007
 * Zhou JianGuo
 * 小白
 * 中国电信上海技术研究院
 * MSN:zhuojianguo_leo@hotmail.com
 */
public class SelectDAO {

 /**
  *
  */
 public SelectDAO() {
  // TODO Auto-generated constructor stub
 }
 /*
   * 获取所有大类的类别列表
   */
 
    /**
  *Feb 20, 2007
  * Zhou JianGuo
  * 小白
  * 中国电信上海技术研究院
  * MSN:zhuojianguo_leo@hotmail.com
  */
 SelectService selectServiceImpl;

 VideoArea VideoArea=new VideoArea();
 protected final Log logger = LogFactory.getLog(getClass().getName());
 public Map getBigType()
 {
   Map map = new HashMap();
   List list = new ArrayList();
   String queryString="from VideoArea where childid is null";
   list=selectServiceImpl.getBigType(queryString);
     for(int i=0;i<list.size();i++){
            
         //---------这里只能采用这种形式,呵呵,为什么??请去看DWR的文档吧
       map.put(((VideoArea)list.get(i)).getFatherid(),((VideoArea)list.get(i)).getFathername());
      }
   return map;
 }
 public Map getSmallType(String data)
 {
   Map map = new HashMap();
   List list = new ArrayList();
   String queryString="from VideoArea where fatherid = ? and childid is not null";
   list=selectServiceImpl.getSmallType(queryString,data);
   System.out.println("list="+list);
     for(int i=0;i<list.size();i++){
      map.put(((VideoArea)list.get(i)).getChildid(),((VideoArea)list.get(i)).getChildname());
      }
   return map;
 }

 /**
  * @return the selectServiceImpl
  */
 public SelectService getSelectServiceImpl() {
  return selectServiceImpl;
 }

 /**
  * @param selectServiceImpl the selectServiceImpl to set
  */
 public void setSelectServiceImpl(SelectService selectServiceImpl) {
  this.selectServiceImpl = selectServiceImpl;
 }
}

SelectService.java

/**
 *Nov 8, 2006
 * Zhou JianGuo
 * 小白
 * MSN:zhuojianguo_leo@hotmail.com
 */
package com.procedure.org.framework.service.select;

import java.util.List;

 


/**
 *Nov 8, 2006
 * Zhou JianGuo
 * 小白
 * MSN:zhuojianguo_leo@hotmail.com
 */
public interface SelectService{
 /**
  * Make the given instance managed and persistent.
  */
 public List getBigType(String queryString);
 public List getSmallType(String queryString,String params);
}

SelectServiceImpl.java

/**
 *Nov 8, 2006
 * Zhou JianGuo
 * 小白
 * MSN:zhuojianguo_leo@hotmail.com
 */
package com.procedure.org.framework.service.select;


import java.util.List;

import org.springframework.context.ApplicationContext;

import com.procedure.hibernate.oracle10.getHibernateTemplate.model.VideoArea;
import com.procedure.org.framework.dao.ICommonDAO;
import com.procedure.org.framework.service.BaseServiceImpl;

/**
 *Nov 8, 2006
 * Zhou JianGuo
 * 小白
 * MSN:zhuojianguo_leo@hotmail.com
 */
public class SelectServiceImpl implements SelectService{

 /**
  *
  */
 public SelectServiceImpl() {
  // TODO Auto-generated constructor stub
 }
 private ICommonDAO commonDAO;
 /**
  * The service Spring bean id, used in the applicationContext.xml file.
  */
 private static final String SERVICE_BEAN_ID = "SelectServiceImpl";

 /**
  * Returns the singleton <code>IProcedureService</code> instance.
  */
 public static ICommonDAO getInstance(ApplicationContext context) {
  return (ICommonDAO)context.getBean(SERVICE_BEAN_ID);
 }
 /**
  * @return the commonDAO
  */
 public ICommonDAO getCommonDAO() {
  return commonDAO;
 }
 /**
  * @param commonDAO the commonDAO to set
  */
 public void setCommonDAO(ICommonDAO commonDAO) {
  this.commonDAO = commonDAO;
 }
 public List getBigType(String queryString) {
  // TODO Auto-generated method stub
  return (List)this.getCommonDAO().getSelect(queryString);
 }
 public List getSmallType(String queryString,String params) {
  // TODO Auto-generated method stub
  return (List)this.getCommonDAO().getSelect(queryString,params);
 }

 

}

页面上的

  <script type='text/javascript' src='../dwr/engine.js'> </script>
  <script type='text/javascript' src='../dwr/util.js'> </script>
  <script type='text/javascript' src='../dwr/interface/SelectDAO.js'> </script>
  <script type='text/javascript' src="<%=JS_PATH%>/select.js"></script>

select.js代码

/*--------------------------------------------------|
| Zhou jianguo                                      |
|---------------------------------------------------|
| Copyright (c) 2007-2008 ChinaTelecom              |
|                                                   |
| Updated: 25.02.2007                               |
|--------------------------------------------------*/
function loadSelect()
{
    SelectDAO.getBigType(createSelect);
}
function createSelect(data)
{
   var big = document.getElementById("cpycde");
   var small = document.getElementById("orgcde");
    DWRUtil.removeAllOptions("cpycde");
    DWRUtil.removeAllOptions("orgcde");
    DWRUtil.addOptions("cpycde",{0:'选择地区'});//----------设置一个初始化的下拉列表内容
    DWRUtil.addOptions("orgcde",{0:'选择区县'});
    big.options[0].selected=true;
    small.options[0].selected=true;
    DWRUtil.addOptions("cpycde", data);
}
function selectASmallcategories(data)
{
var small = document.getElementById("orgcde");
var smallcategories=dwr.util.getValue("orgcde");
   small.length=1;
   small.options[0].selected=true;
  if(data == "0"){
    DWRUtil.removeAllOptions("orgcde");
     DWRUtil.addOptions("orgcde",{0:'选择区县'});
    small.length=1;
    small.options[0].selected=true;
   
  }else
  {
    DWRUtil.removeAllOptions("orgcde");
   DWRUtil.addOptions("orgcde",{0:'选择区县'});
   SelectDAO.getSmallType(data,getASmallInfo);//这里被调用的方法要放后面,要传递的参数放前面
  } 
}
function getASmallInfo(data){
   DWRUtil.addOptions("orgcde",data);
 }

页面上的

  <TR class=common>
     <TD class=title>录入时间: </TD>
    <TD class=input><html:text property="datime" styleClass="common" maxlength="20" readonly="true" />*</TD>
    <TD class=title>地区码: </TD>
    <TD class=input><html:select property="cpycde" styleClass="common" onchange="selectASmallcategories(this.value)"> 
                   </html:select>
    </TD>
    <TD class=title>区县码: </TD>
    <TD class=input><html:select property="orgcde" styleClass="common"> 
                   </html:select>
 </TD>
  </TR>

有什么问题可以联系我,嘻嘻~~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值