当前位置:
代码迷
>>
JavaScript
>> 纯JSP+DWR实现三级联动上拉选择菜单
详细解决方案
纯JSP+DWR实现三级联动上拉选择菜单
热度:
838
发布时间:
2013-01-28 11:49:56.0
纯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就不帖了,想了解的可以去下载源码。点此下载
查看全文
相关解决方案