- 浏览: 1210748 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (434)
- js (20)
- struts2 (77)
- spring (11)
- hibernate (17)
- ssh整合 (9)
- 程序例子 (4)
- 正则表达式 (8)
- JSP (20)
- IDE (15)
- 数据库 (10)
- 工作经验技巧感悟 (21)
- 程序员的幽默 (4)
- windows设置 (4)
- 名词解释 (4)
- 技术入门 (4)
- jFreeChart (16)
- OGNL (5)
- java基础 (46)
- dwr (4)
- portal (1)
- 示例用到的附件 (0)
- 优秀程序员45个习惯 (1)
- webService (1)
- shell (3)
- ibatis (3)
- 开发工具 (1)
- OS (3)
- xmlbean (2)
- design_pattern (0)
- error (1)
- testng (2)
- python (18)
- hadoop (21)
- mapreduce (9)
- Hive (0)
- HBase (0)
- ubuntu (22)
- 多线程 (7)
- 自我改进 (6)
- 设计模式 (1)
- ssh (2)
- ant (4)
- guake (2)
- 云计算 (9)
- hdfs (3)
- 大数据 (1)
- 电信业务 (1)
- maven (2)
- svn (5)
- UML (1)
- 待处理问题 (2)
- log4j (1)
- css (1)
- LevelDb (0)
- thrift (6)
- 辅助工具 (3)
- 算法 (1)
- tornado (0)
- twisted (1)
- jvm (0)
- 图书 (1)
- 其他 (1)
- oracle (2)
- mvn (1)
- 私人信息 (0)
- nio (1)
- zookeeper (1)
- JavaIO (3)
- mongodb (1)
- java-高级 (6)
- spring-深入 (1)
- tomcat (1)
- quartz (1)
- 面试题 (1)
- redis (3)
- EJBCA (0)
- spring-3.0 (1)
- memcache (3)
- 性能检测 (1)
- android (0)
- 开源项目 (1)
- 将博客搬至CSDN (0)
- 架构之路 (1)
最新评论
-
pjwqq:
“子类对象”都拥有了“父类对象的一个实例的引用”我晕,应该是“ ...
java继承--父类属性的存放位置 -
gwgyk:
关于楼主最后的问题,我想可能是这样:InputFormat默认 ...
eclipse 运行hadoop wordcount -
fanjf:
上述7点基本具备,可惜现在因为项目需要,做管理方面工作!
如何判断自己是否具有成为一名优秀程序员的潜质 -
摸爬滚打NO1:
链接已经失效
Eclipse添加JSEclipse 插件(js插件) -
younglibin:
看了以上7条, 自己 也不知道是否能够对上, 感觉没一点都有那 ...
如何判断自己是否具有成为一名优秀程序员的潜质
今天遇到一个问题:
有三个下拉列表,分别是:消息大类,消息中类,消息小类;要用级联的方式展现:如图:
当选择 消息大类 时 ,刷出消息中类,内容只包含 大类选择条件下的类型!同理 选择中类 刷出小类!
(注意这里的下拉列表的值 是从数据库中查出来的,不是写死在html;
从数据库中查出来的数据,特别是中类和大类难免有些重复现象,怎么取出重复呢?看这里(使用map转换整理中)
)
下面用两种方法来介绍 下拉列表级联:
1.dwr方式:
具体的dwr配置请看:
下面只介绍级联用到的js:
function getChild(pareantType,childType){ if(pareantType==null||pareantType.length<1) // parentType:当前下拉列表的参数(可更具自己的查询条件,传值【可以是选中的code,或type....】) //childType:要刷出子列表的 参数(同上) { return; } try { var id = document.getElementById(pareantType).value; MsgTypeService.getMsgType(id,childType,function(data) // id : 查询使用到的条件,更具自己的Service用的参数,可以传零到多个 // data: service放回的list 也就是子列表中显示的数据了 { if(data!=null) { var oBtsTypeNumber=document.all(childType); while( oBtsTypeNumber.childNodes.length>0) { oBtsTypeNumber.removeChild(oBtsTypeNumber.childNodes(0)); } var op= document.createElement("Option") op.value=""; op.text="--全部--"; oBtsTypeNumber.add(op); //这里是将 子列表中数据清空 for(i=0;i<data.length;i++) { var no=document.createElement("Option"); //为子列表添加数据,遍历 no.value= data[i].code; no.text = data[i].midType; //注意这里的 code 和midType这两个值,是 ,返回 list 的泛型(的两个字段),并且,在配置dwr.xml时要注意,和泛型相一致,否则会出现,code或midType为空或不是对象的错误警告! oBtsTypeNumber.add(no); if("${pareantType}"==data[i].midType){ no.selected="true"; } } } }); } catch(e) {} }
,解释一下:返回list的泛型:
dwr.xml:
<convert converter="bean" match="com.iman.nrms.nrmwns.prm.message.domain.model.MsgType"/> // com.iman.nrms.nrmwns.prm.message.domain.model.MsgType dwr 调用返回list 的泛型 <create creator="spring" javascript="MsgTypeService"> <param name="beanName" value="msgTypeService"/> <include method="getMsgType"/> <include method="getMsgMidType"/> </create> 在哦jsp页面代码中 用到的 code 和midType 都是 MsgType 这个po中的属性!,根据自己的需要!再在这里配置!
下面就是掉 dwr的方法了:
<td width="4%" rowspan="3"><img src="${path}/page/wrm/image/search.gif" width="40" height="39"></td> <td nowrap="nowrap">消息大类</td> <td> <s:select list="msgBigTypeList" name="msgType.bigType" onchange="getMidType('bigType','midType');" id="bigType" cssClass="select" headerKey="" headerValue="--请选择--" listKey="code" listValue="bigType"></s:select> </td> <td nowrap="nowrap">消息中类</td> <td> <s:select list="msgMidTypeList" name="msgType.midType" onchange="getSmlType('midType','smlType');" id="midType" cssClass="select" headerKey="" headerValue="--请选择--" listKey="code" listValue="midType"></s:select>
方法2:(推荐使用方法)
这个方法首先要为每一个 </td>下拉列表写一个 function();
这里用到了三个下拉列表,级联了两次,就要写两个:
/** 大类与中类级联 */ function getMidType(parentValue,childName){ var url= "${path}/message/getMidTypeByBigType.action"; var propertyName = "midType"; fnGetChildValueList(parentValue , childName , url , propertyName ); } /** 中类与小类级联 */ function getSmlType(parentValue , childName ) { var url= "${path}/message/getSmlTypeByMidType.action"; var propertyName = "smlType"; fnGetChildValueList(parentValue , childName , url , propertyName); } /** * 下拉框级联 * @param {Object} parentValue * @param {Object} child 必须在当前页面的第一个Form表单中的name属性或者下拉框对象的id * @param {Object} url * @param {Object} propertyName * @param {String} callBack //结束后,要调用的函数名 */ function fnGetChildValueList(parentValue , child , url , propertyName ) { if(!parentValue||!child) { return; } var oChild = document.forms[0][child]; if(typeof oChild != 'undefined') { try{ oChild = $(child); }catch(e){return;} if(!oChild){ return; } } var ops=oChild.options; while(ops.length>0){ oChild.remove(ops.length-1); } var oOption = document.createElement("OPTION"); oOption.setAttribute("text","请选择"); oOption.setAttribute("value",""); oChild.add(oOption); ajax.sendPostRequest(url , propertyName + "=" + encodeURI(encodeURI(parentValue)) ,function(result){ eval("var keyValueList="+result.responseText); for(var i=0; i<keyValueList.length; i++) { var keyValue=keyValueList[i]; var oOption = document.createElement("OPTION"); oOption.setAttribute("text",keyValue.value); oOption.setAttribute("value",keyValue.key); oChild.add(oOption); } }); }
注意这里用到的:keyValueList
要在Action中包装:
public String getMidTypeByBigType(){ try { msgMidTypeList = this.msgTypeService.getMidTypeByBigType(java.net.URLDecoder.decode(midType, "UTF-8")); List<KeyValue> keyValueList = new ArrayList<KeyValue>(); if (msgMidTypeList != null) { for (MsgType c : msgMidTypeList) { keyValueList.add(new KeyValue(c.getCode(), c.getMidType())); } } // 向客户端直接输出文本数据 renderText(keyValueList.toString()); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; }
发表评论
-
struts2 学习资料
2013-10-08 12:23 953struts2.0 系列文章 http://www.blo ... -
javaweb项目RuntimeException不能默认打印到控制台
2012-11-26 15:46 3047前几天搭建了一个框架: 配置 struts2 spring2 ... -
jsp页面用s:datetimepicker不显示时间下拉框(提示dojo未定义错误)
2010-01-15 09:49 5799在写时一定要加上:form 标签外加上<s:head t ... -
struts2中struts.xml 文件详解(中文版翻译)入门篇
2009-12-21 11:15 2124<!DOCTYPE struts PUBLIC &quo ... -
Struts2中的(Interceptor)拦截器的执行顺序
2009-12-10 15:00 5947Interceptor的接口定义没 ... -
Struts2中的拦截器的内部结构
2009-12-10 14:44 1508让我们再来回顾一下之前我们曾经用过的一张Action Life ... -
struts2 中Action的生命周期
2009-12-10 14:40 1826接下来,我们再来看看Struts2中的Action的生命周期: ... -
Struts2的Action并不带有任何Web容器相关的对象,Action又是如何工作在Web容器中
2009-12-10 14:39 2129虽然Struts2的Action只是一 ... -
Struts2中的Action 定义
2009-12-10 14:38 1349多数的MVC框架中的Control层,都是一个Java对象。按 ... -
struts2中Action的五大元素
2009-12-10 14:23 2635在大概了解了Struts2的Action后,我们来重点研究一下 ... -
jsp 向Action传值(不提交committ 也能传值)
2009-12-05 09:45 3819今天发现 当药提交表单是 页面的 字段 在Action接收不 ... -
struts2 Tooltip和radio 还有关系吗?
2009-10-12 17:19 1779今天遇到一个奇怪的问题,拿来大家看看! 我用stru ... -
jsp向action传值的几个错误一点
2009-09-23 08:36 16221. 在jsp页面首次请求时正确!通过查询可以正确显示数 ... -
struts2 标签展示 map
2009-09-21 17:59 2264从数据库中查找出来的 ... -
struts2 标签展示 map
2009-09-21 17:48 2705在jsp页面用iterator 迭代时,如果 list中放的是 ... -
struts.properties 配置解析
2009-09-11 10:45 2051### struts.properties这是一 ... -
Struts1和Struts2的区别和对比
2009-09-11 10:05 1583? Struts1要求Action类继承 ... -
el表达式函数
2009-09-11 09:48 1277<%@ taglib prefix="fn&q ... -
struts2 手动校验原理图解
2009-09-02 10:37 17401、Struts 2的类型转换器负责对客户端的字 ... -
struts2 校验器——正则表达式校验器(regex)(内建校验器)
2009-09-02 10:19 5118正则表达式校验器的名称:regex,他检查被校验字段是否匹配一 ...
相关推荐
在这个特定的场景中,我们利用Ajax技术和Direct Web Remoting(DWR)框架来创建一个动态的省份城市级联菜单。这个功能能够提升用户体验,因为它减少了用户手动刷新页面的需求,提供了流畅的交互。 首先,我们需要...
Ajax(异步JavaScript和XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术,它极大地提升了用户体验。DWR(Direct Web Remoting)是Ajax的一个框架,它允许JavaScript与Java后端进行直接通信,实现...
AJAX-DWR下拉框级联是Web开发中一种常见的交互设计,主要用于提高用户体验,使得用户在选择某个选项时,相关联的下拉框能够自动更新其内容,以适应不同的场景需求。在这个实验中,我们将重点探讨如何使用AJAX和DWR...
首先,我们需要理解DWR的核心概念:通过AJAX(异步JavaScript和XML)技术,DWR使Java方法可以直接在客户端调用,从而实现了前后端的无缝通信。在创建级联下拉框时,通常需要以下步骤: 1. **服务器端准备**: - ...
在Web开发中,级联下拉列表框是一种常见的交互元素,它允许用户在选择一个选项后,根据所选选项更新另一个下拉列表框中的选项。本主题将详细讲解如何使用Direct Web Remoting (DWR)、Hibernate 和 Spring 框架来实现...
DWR (Direct Web Remoting) 是一个开源Java框架,它允许Web应用程序在客户端JavaScript和服务器端Java代码之间进行实时通信,无需使用XMLHttpRequest(Ajax)或其他插件。DWR简化了在Web应用中实现动态、交互式的...
在“dwr实现select列表的动态级联”这个场景中,DWR将被用来实现在前端JavaScript和后端Java之间的数据同步,以便在用户选择上级选项时动态更新下级选项列表。以下是实现这个功能的关键步骤: 1. **设置DWR配置**:...
在IT行业中,动态Web应用程序的开发常常涉及到用户界面的交互性,其中级联菜单(Cascading Menu)是一种常见的设计模式,特别是在数据管理和导航中。DWR(Direct Web Remoting)是一个JavaScript库,它允许Java代码...
通过学习这个例子和参考书,开发者不仅可以掌握DWR实现级联菜单的技术细节,还能了解到如何将服务器端和客户端有效地结合起来,提高Web应用的互动性和响应性。对于那些希望提升Web应用用户体验的开发者来说,这是一...
SSH (Struts2 + Spring + Hibernate) 和 DWR (Direct Web Remoting) 是两种常见的Java Web开发技术。在本文中,我们将深入探讨如何将这两种技术结合,实现一个三级联动的效果。 SSH是Java企业级开发中广泛应用的一...
SSH(Secure Shell)和DWR(Direct Web Remoting)是两种不同的技术,它们在Web开发中各有其用途。SSH主要用于提供安全的网络服务,如远程登录、文件传输等,而DWR则是一种JavaScript到Java的远程调用技术,使得前端...
DWR是一种让JavaScript和Java在浏览器与服务器之间进行实时通信的技术,简化了Ajax开发。 首先,我们需要了解Java的基础知识。Java是一种面向对象的编程语言,广泛用于开发Web应用。在这个案例中,Java将作为服务器...
**DWR (Direct Web Remoting) 是一个开源的Java库,它允许JavaScript在浏览器端直接调用服务器端的Java方法,实现Ajax(异步JavaScript和XML)应用。DWR简化了客户端与服务器端的交互,使得开发人员可以更加便捷地...
DWR是一种JavaScript库,它使得在浏览器和服务器之间进行异步通信变得更加简单,从而实现页面的动态更新而无需刷新整个页面。 **一、DWR三级联动下拉菜单** 在Web应用中,三级联动下拉菜单常用于地理信息选择,如...
在这个“ajaxdwr select二级联动”的场景中,我们将讨论如何利用这两种技术实现下拉菜单的级联选择效果。 Ajax是一种在无需刷新整个页面的情况下,能够更新部分网页的技术。它通过JavaScript发送异步请求到服务器,...
DWR (Direct Web Remoting) 是一个开源的Java库,它允许Web应用程序在客户端和服务器之间进行实时的、异步的通信,无需使用Ajax或Flash技术。DWR使得JavaScript可以直接调用服务器端的Java方法,简化了前端与后端的...
Struts2是一个基于MVC设计模式的Java EE框架,用于构建可维护性和可扩展性高的企业级应用,而DWR则是一种使得JavaScript可以调用服务器端Java方法的库,实现了AJAX(异步JavaScript和XML)的功能,提供了更丰富的...
6. **整合DWR**:在dwr.xml配置文件中注册需要暴露给JavaScript的Java方法,例如获取省份列表和根据省份ID获取城市列表的方法。 7. **前端页面**:使用HTML和JavaScript创建省份和城市的选择下拉菜单,通过DWR异步...
DWR(Direct Web Remoting)是一种Java库,用于在Web应用程序中实现实时的客户端-服务器通信,使得JavaScript可以调用服务器端的Java方法,从而实现动态无刷新的页面交互。在本例中,我们将讨论如何利用DWR2版本创建...
DWR是一种JavaScript库,它允许在客户端浏览器和服务器之间进行实时、异步通信,类似于AJAX,但提供了更直接的方法来调用服务器端的Java方法。通过DWR,开发者可以轻松地创建动态、交互性强的Web应用,而无需处理...