我的漫漫程序之旅
专注于JavaWeb开发
纯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就不帖了,想了解的可以去下载源码。
点此下载
posted on 2008-05-29 11:59
々上善若水々
阅读(364)
评论(1)
编辑
收藏
所属分类:
AJAX
评论
#
re: 纯JSP+DWR实现三级联动下拉选择菜单[未登录]
2008-05-30 17:47
草儿
强~下来学习学习。
回复
更多评论
IT新闻
新用户注册
刷新评论列表
标题
姓名
主页
验证码
*
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
相关文章:
小试Annotation来配置DWR
纯JSP+DWR实现三级联动下拉选择菜单
Ajax实现二级联动菜单
ExtJS2.0实用简明教程
DWR实现模拟Google搜索效果
DWR+Hibernate无刷新判断用户是否存在(原创)
ExtJs系列1
相关链接:
网站导航:
博客园
BlogJava
博客生活
IT博客网
C++博客
PHP博客
博客园社区
管理博客
教师博客
天文博客
汽车博客
足球博客
股票博客
电子博客
管理
导航
首页
新随笔
联系
管理
<
2008年12月
>
日
一
二
三
四
五
六
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
统计
随笔 - 21
文章 - 279
评论 - 140
引用 - 0
留言簿
(12)
给我留言
查看公开留言
查看私人留言
随笔档案
(24)
2008年11月 (3)
2008年9月 (2)
2008年8月 (1)
2008年7月 (2)
2008年6月 (2)
2008年5月 (9)
2008年4月 (2)
2007年12月 (3)
文章分类
(277)
AJAX(7)
(rss)
Hibernate(3)
(rss)
J2ME(2)
(rss)
J2SE(36)
(rss)
JavaScript(57)
(rss)
JavaWeb(24)
(rss)
Java笔试与面试(52)
(rss)
opensource(13)
(rss)
Spring(9)
(rss)
SSH整合系列(2)
(rss)
Struts1.x(3)
(rss)
Struts2(11)
(rss)
WebService(14)
(rss)
数据库(10)
(rss)
数据结构与算法(7)
(rss)
设计模式(17)
(rss)
软件测试(10)
(rss)
文章档案
(228)
2008年12月 (1)
2008年11月 (4)
2008年10月 (2)
2008年9月 (2)
2008年8月 (10)
2008年7月 (22)
2008年6月 (13)
2008年5月 (45)
2008年4月 (17)
2008年3月 (5)
2008年2月 (11)
2008年1月 (27)
2007年12月 (45)
2007年11月 (24)
搜索
最新评论
1. re: javascript文件夹选择框的两种解决方案
我用了第一中方法。可是还有一个问题,就是选择了远程计算机上的文件夹,怎么获得全路径?
--justin
2. re: Flash图表(FusionChartsV3)的简单应用
就是说网页上有多个图表,当页面加载时所有动画效果已经完成,下边的图表无法看到动画的效果,只是个最终的结果,如果有循环控制的话就可以看到下边的图表时仍然可以看到动画效果,也相当于不断刷新自己吧!谢谢
--左
3. re: Flash图表(FusionChartsV3)的简单应用
不明白你说的什么意思,不断刷新Chart自己?
--々上善若水々
4. re: Flash图表(FusionChartsV3)的简单应用
请问一下楼主,如何让FusionCharts生成的图表在网页上循环播放啊,谢谢!!!
--左
5. re: Struts1.2实现单文件上传
方法太牛比了。mail:yaoyao19851023@163.com
--yaoyao
阅读排行榜
1. 一道Struts面试题(3009)
2. javascript文件夹选择框的两种解决方案(2295)
3. ExtJS & GTGrid 简单用户管理(1833)
4. jexcelapi使用小记(1749)
5. Flash图表(FusionChartsV3)的简单应用 (1706)
评论排行榜
1. Flash图表(FusionChartsV3)的简单应用 (19)
2. [原创]J2ME/J2EE实现用户登录交互(7)
3. Flash图片轮换显示的效果抽取(7)
4. ExtJS & GTGrid 简单用户管理(6)
5. StringBuffer和StringBuilder添加null值的误导(5)