java 文件内容:
/**
* 主要实现地址的查询
*/
public class Address {
private AddressService addressService;
/**
* 查询国家 @ Write time: 2007-6-26 下午02:39:07 <Br>
* @return List<State><br>
*/
public List getCountries() {
List countries = null;
countries = addressService.getAllCountry();
return countries;
}
/**
* 根据国家编号获取省 @ Write time: 2007-6-26 下午02:39:07 <Br>
* @param id
* 国家编号
* @return List<State><br>
*/
public List getStates(String id) {
List states = null;
if (!isNumber(id)) {
System.out.println("Country id is not a number!");
states = new LinkedList();
return states;
}
states = addressService.getStateByCountryId(Long.parseLong(id));
return states;
}
/**
* 根据省编号获取市 @ Write time: 2007-6-26 下午02:39:07 <Br>
* @param id
* 省编号
* @return List<City><br>
*/
public List getCities(String id) {
List cities = null;
if (!isNumber(id)) {
System.out.println("State id is not a number");
cities = new LinkedList();
return cities;
}
cities = addressService.getCityByStateId(Long.parseLong(id));
return cities;
}
/**
* 根据State 市编号查找 对应 的省
*/
public Object getStateByCityId(String id) {
if (!isNumber(id)) {
System.out.println("City id is not a number");
return null;
}
return addressService.getStateByCityId(Long.parseLong(id));
}
/**
* 根据 省编号 查找对应的国家
* @author: Sivyer <br>
* @write time: 2007-10-12 下午03:14:47 <Br>
* @param id
* @return<br>
*/
public Object getCountryByStateId(String id) {
if (!isNumber(id)) {
System.out.println("State id is not a number");
return null;
}
return addressService.getCountryByStateId(Long.parseLong(id));
}
private boolean isNumber(String s) {
Pattern pattern = Pattern.compile("[0-9]");
Matcher isNum = pattern.matcher(s);
if (isNum.matches()) {
return true;
} else
return false;
}
public AddressService getAddressService() {
return addressService;
}
public void setAddressService(AddressService addressService) {
this.addressService = addressService;
}
}
js 文件内容
<!--
/*
作者:Sivyer 2007-6
功能:地址控件,初始化函数: initAddress()
注: init()时,需要在页面里定义 country/state/city 的select
initDiv(),只需要定义一个 Div ,name 设为 "addressDiv"
*/
var selCountry = "selCountry";
var selState = "selState";
var selCity = "selCity";
var defaultCountry = -1;
var defaultState = -1;
var defaultCity = -1;
var countryHead = { '-1':'... 请选择国家...'};
var stateHead = { '-1':'...请选择所在省...'};
var cityHead = { '-1':'...请选择所在市...'};
function setDefaultValue(_country,_state,_city){
defaultCountry = _country;
defaultState = _state;
defaultCity = _city;
}
function initAddress() {
if(defaultCountry ==""){
defaultCountry == -1;
}
if(defaultState == ""){
defaultState == -1;
}
if(defaultCity == ""){
defaultCity == -1;
}
getCountries();
}
/*
返回国家列表
*/
function getCountries() {
try{
Address.getCountries(function (countries) {
clearCountry();
DWRUtil.addOptions(selCountry , countries, "id", "name");
DWRUtil.setValue(selCountry,defaultCountry);
getStates();
});
}catch(e){
alert("获取市信息时出错" + e);
}
}
function getStates() {
try{
var countryId = getSelectId(selCountry);
if (countryId != -1) {
Address.getStates(countryId, function (states) {
clearState();
DWRUtil.addOptions(selState, states, "id", "name");
DWRUtil.setValue(selState,defaultState);
defaultState = getSelectId(selState);
getCities();
});
} else {
clearState();
clearCity();
getCities();
}
}catch(e){
alert("获取省信息时出错!" + e);
}
}
function getCities() {
try{
var stateId = getSelectId( selState );
var countryId = getSelectId( selCountry );
if (stateId != -1 && countryId != -1) {
Address.getCities(stateId, function (cities) {
clearCity();
DWRUtil.addOptions(selCity, cities, "id", "name");
if(getSelectId(selState) != -1 && getSelectId(selCountry) != -1){
DWRUtil.setValue(selCity,defaultCity);
defaultCity = getSelectId(selCity);
}
});
}else if(stateId == -1 && countryId == -1 && defaultCity != -1){
clearCity();
}
}catch(e){
alert("获取市信息时出错!" + e);
}
}
function clearCountry(){
defaultCountry = -1;
DWRUtil.removeAllOptions(selCountry);
DWRUtil.addOptions(selCountry,countryHead);
}
function clearState(){
defaultState = -1;
DWRUtil.removeAllOptions(selState);
DWRUtil.addOptions(selState,stateHead);
}
function clearCity(){
defaultCity = -1;
DWRUtil.removeAllOptions(selCity);
DWRUtil.addOptions(selCity,cityHead);
}
/*
*作者:Sivyer Email:pxysea@163.com
*功能:获取选择的地址编号
*参数:name 可值可以为 country,state,city
*返回:如果选择正确 对应编号,否则返回 -1;
*/
function getSelectId( name ){
var id;
if(name == selCountry){
id = DWRUtil.getValue(selCountry );
}else if( name == selState ){
id = DWRUtil.getValue(selState);
}else if( name == selCity ){
id = DWRUtil.getValue(selCity);
}
if(isNaN(id)){
return -1;
}else{
return id;
}
}
function setDefaultValue(sel,value){
DWRUtil.setValue(sel,value);
}
//-->
dwr.xml 配置文件
<!-- 地址信息配置 -->
<create creator="spring" javascript="Address">
<param name="beanName"
value="addressBean" />
</create>
<convert match="com.mp.job.hibernate.vo.Country" javascript="Country" converter="bean"/>
<convert match="com.mp.job.hibernate.vo.City" javascript="City" converter="bean"/>
<convert match="com.mp.job.hibernate.vo.State" javascript="State" converter="bean"/>
示例jsp文件
<%
String basePath = request.getContextPath();
%>
<html>
<head>
<script type='text/javascript'
src='<%=basePath%>/dwr/interface/Address.js'></script>
<script type='text/javascript' src='<%=basePath%>/dwr/engine.js'></script>
<script type='text/javascript' src='<%=basePath%>/dwr/util.js'></script>
<script type="text/javascript" src="<%=basePath%>/js/day.js"></script>
<script type='text/javascript' src='<%=basePath%>/js/address.js'></script>
</head>
<body>
国家:
<select name="companyuser.countryId" id="selCountry"
onchange="getStates()" >
</select>
这段代码是初始化:如果没有初始值,可只执行 initAddress()方法
<script type="text/javascript">
defaultCountry = 1; //初始值;
defaultState = 1; //初始值;
defaultCity = 1; //初始值;默认是 -1
initAddress();
</script>
<br/> 省:
<select name="companyuser.stateId" id="selState" onchange="getCities()">
</select>
<br/>市:
<select name="companyuser.cityId" id="selCity">
</select>
</body>
分享到:
相关推荐
在这个特定的场景中,我们利用Ajax技术和Direct Web Remoting(DWR)框架来创建一个动态的省份城市级联菜单。这个功能能够提升用户体验,因为它减少了用户手动刷新页面的需求,提供了流畅的交互。 首先,我们需要...
总之,DWR级联菜单下拉框是利用DWR和AJAX技术实现的动态交互功能,它简化了前后端通信,提供了更流畅的用户体验。通过学习和实践这个案例,开发者可以提升在Web应用开发中对DWR、AJAX以及级联菜单设计的理解和应用...
本篇文章将深入探讨如何利用DWR来实现一个两级级联菜单,并以SQL Server 2000数据库作为数据源。 首先,我们需要理解DWR的基本工作原理。DWR允许在后台执行Java方法并返回结果到前端,无需刷新整个页面。这种技术...
DWR在实现级联菜单中的作用主要体现在以下几个方面: 1. **远程方法调用**:DWR的核心功能是允许JavaScript直接调用服务器端的Java方法。这意味着当用户在前端选择一个菜单项时,可以通过DWR异步地向服务器发送请求...
级联菜单(Cascading Menu)在Web应用中是一种常见的交互设计,主要用于展现层次结构的数据,比如国家-省份-城市的关系。在这个例子中,我们利用Java后端技术和Direct Web Remoting (DWR) 框架来实现这种功能。DWR是...
Direct Web Remoting (DWR) 是一个JavaScript库,它允许JavaScript代码直接调用服务器端的Java方法,实现了AJAX(Asynchronous JavaScript and XML)的功能。在本案例中,DWR将作为前端与后端的桥梁,当用户在前端...
DWR允许我们通过JavaScript在客户端动态更新下拉菜单选项,当用户在一个菜单中做出选择时,根据选择的值,DWR会自动向服务器发送请求,获取并填充后续级联菜单的内容。这一过程无需用户手动刷新页面,提高了用户体验...
在"**DWR AJAX 简单示例**"中,我们通常会看到一个常见的应用场景,即级联下拉菜单。级联下拉菜单通常用于多级关联的数据选择,例如,选择国家后,相应的省份列表会动态加载;选择省份后,城市列表也会随之更新。...
现在流行的ajax视频教程,几个示例包括用户名验证,级联菜单,dwr框架的应用~是exe格式的
项目中的"dwrt+struts三级级联菜单"可能包含了以下文件: - `struts-config.xml`: Struts框架的配置文件,定义了Action和ActionForm。 - `dwr.xml`: DWR的配置文件,声明了允许JavaScript调用的Java方法。 - Java...
在本例中,我们将讨论如何利用DWR2版本创建一个联动下拉菜单,这是一种常见的级联选择功能,常见于数据输入表单中,如地址选择,省-市-区的逐级筛选。 首先,我们需要在服务器端设置DWR引擎。这包括创建一个`dwr....
在这个“ajaxdwr select二级联动”的场景中,我们将讨论如何利用这两种技术实现下拉菜单的级联选择效果。 Ajax是一种在无需刷新整个页面的情况下,能够更新部分网页的技术。它通过JavaScript发送异步请求到服务器,...
在IT行业中,尤其是在Web开发领域,省市县三级级联是一个常见的需求,主要用于用户选择地址时提供方便的下拉菜单选择。这种功能可以提高用户体验,减少输入错误。在本项目中,开发者利用了Hibernate这一强大的对象...
实际应用方面,包括了实战技巧如数据校验、级联菜单、条目内容、级联下拉列表等,这些技巧可以在实现AJAX应用时提高效率和用户体验。还有异常处理机制、中文乱码问题及其解决方案等内容,这些都是在进行AJAX编程时...
当用户在第一个下拉菜单(国家)中选择一个选项时,`menu.js` 的方法会被调用,从而更新第二个下拉菜单(省份)的选项。接着,当省份选择改变时,会进一步更新第三个下拉菜单(城市)的选项。 DWR是一种轻量级的...
在Java Web开发中,省市级联下拉菜单是一种常见的需求,它允许用户在选择省份后自动更新城市下拉菜单,展示对应省份的城市列表。这个实例代码主要涉及的技术点包括Servlet、JSON处理以及简单的数据模拟。 1. **...
下面我们将深入探讨如何利用DWR实现省市级联菜单。 首先,我们需要在后端创建一个Java服务,这个服务通常是一个Servlet或者Controller,负责处理来自前端的请求并返回省市数据。这个服务可能包含以下关键步骤: 1....
在这个场景中,我们使用了DWR(Direct Web Remoting)这一强大的Ajax技术,并结合Oracle数据库来存储和检索数据。 DWR是一种开源Java库,它允许JavaScript与服务器端的Java代码进行实时通信,而无需页面刷新。通过...
- **按需取数据**:如级联菜单,根据用户的前一步选择动态加载后续选项。 - **读取外部数据**:例如,从第三方API获取数据并在页面上显示。 #### 二、发送请求及处理响应 ##### 2.1 GET请求 GET请求是最常见的...
4.4.7. 露一小手,组合上面所知,省市县三级级联。哈哈~ 4.4.7.1. 先做一个模拟的,所有数据都在本地 4.4.7.2. 再做一个有后台的,需要放在服务器上咯 4.5. 把form里的那些控件全部拿出来看看 4.6. form提交数据的...