DWR 2 与 Spring 2融合后与前面DWR学习笔记之中主要不同的是dwr.xml及Spring xml配置管理文件(applicationContext.xml)的配置
具体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="coProCityService"> <param name="beanName" value="CoProCityService"></param> </create> <!-- <convert converter="bean" match="com.trade3c.model.register.CoProCityModel"/> --> </allow> </dwr>
creator属性的值可以是new,struts,spring......因为此处是整合spring来做的,所以设置成“spring”, javascript="coProCityService" 表示实例转换成javascript语言后以coProCityService命名,前台页面可以通过代码(<script type='text/javascript' xsrc='../../dwr/interface/coProCityService.js'></script>)来调用。param元素的name 属性值可以是class,beanName等,此处用beanName,value得值是定义在applicationContext.xml中某个 bean的id值。
4、创建一个实体bean供DWR转换成js 代码
package com.project.dwr;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
.
.
.
public class CoProCityService extends CountryProvinceCityServiceImp implements CountryProvinceCityService
{
private Log log = LogFactory.getLog(CoProCityService.class);
public Map<String, String> getCountrys()
{
Map<String, String> countryMap = new HashMap<String, String>();
List<CountryMas> countryList = queryCountryByWh(" order by model.pkNo");
if(countryList != null && countryList.size() > 0)
{
for(CountryMas country:countryList)
{
countryMap.put(country.getPkNo().toString(), country.getCountryName());
}
}
return countryMap;
}
public Map<String, String> getProvinces(String countryPkNo)
{
Map<String, String> provinceMap = new HashMap<String, String>();
List<ProvinceMas> provinceList = queryProvinceByWh(" where model.countryPkNo="+Long.parseLong(countryPkNo)+" order by model.pkNo");
if(provinceList != null && provinceList.size() > 0)
{
for(ProvinceMas province:provinceList)
{
provinceMap.put(province.getPkNo().toString(), province.getProvinceName());
}
}
return provinceMap;
}
public Map<String, String> getCities(String provincePkNo)
{
Map<String, String> cityMap = new HashMap<String, String>();
List<CityMas> cityList = queryCityByWh(" where model.provincePkNo="+Long.parseLong(provincePkNo)+" order by model.pkNo");
if(cityList != null && cityList.size() > 0)
{
for(CityMas city:cityList)
{
cityMap.put(city.getPkNo().toString(), city.getCityName());
}
}
return cityMap;
}
}
5、在applicationContext.xml中配置第4步写的bean 代码
- ......
- <bean id="CoProCityService" class="com.project.dwr.CoProCityService">
- <property name="ius">
- <ref bean="XXXService" />
- </property>
- </bean>
- ......
6、在视图页面中调用,主要作用代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<script type='text/javascript' src='/trade3c/dwr/interface/coProCityService.js'></script>
<script type='text/javascript' src='/trade3c/dwr/engine.js'></script>
<script type='text/javascript' src='/trade3c/dwr/util.js'></script>
<script type="text/javascript">
<!--
function change1()
{
coProCityService.getCountrys(countryList);
coProCityService.getProvinces(DWRUtil.getValue("countryPkNo"),provinceList);
coProCityService.getCities(DWRUtil.getValue("provincePkNo"),cityList);
}
function countryList(data)
{
DWRUtil.removeAllOptions("countryPkNo");
DWRUtil.addOptions("countryPkNo", data);
}
function change2()
{
// alert("yeye"+DWRUtil.getValue("countryPkNo"));
coProCityService.getProvinces(DWRUtil.getValue("countryPkNo"),provinceList);
coProCityService.getCities(DWRUtil.getValue("provincePkNo"),cityList);
}
function provinceList(data)
{
DWRUtil.removeAllOptions("provincePkNo");
DWRUtil.addOptions("provincePkNo", data);
}
function change3()
{
coProCityService.getCities(DWRUtil.getValue("provincePkNo"),cityList);
}
function cityList(data)
{
DWRUtil.removeAllOptions("cityPkNo");
DWRUtil.addOptions("cityPkNo", data);
}
//-->
</script>
<body οnlοad="change1();">
<select id="countryPkNo" name="countryPkNo" οnchange="change2();"></select>
<select id="provincePkNo" name="provincePkNo" οnchange="change3();"></select>
<select id="cityPkNo" name="cityPkNo">
</body>