<%@ page language="java" contentType="text/html; charset=gb2312" pageEncoding="gb2312"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>dwr demo</title> <mce:script type='text/javascript' src="/dwr/dwr/interface/testMethod.js" mce_src="dwr/dwr/interface/testMethod.js"></mce:script> <mce:script type='text/javascript' src="/dwr/dwr/engine.js" mce_src="dwr/dwr/engine.js"></mce:script> <mce:script type='text/javascript' src="/dwr/dwr/util.js" mce_src="dwr/dwr/util.js"></mce:script> <mce:script type="text/javascript"><!-- function TestList(){ testMethod.testList(callbackMethod) } function callbackMethod(data){ for(var property in data){ alert(data[property].name+" "+data[property].age); } } //////////////////// function TestMap(){ testMethod.testMap(callbackMethodMap) } function callbackMethodMap(data){ for(var property in data){ var bean = data[property]; alert(bean.name+" "+bean.age); } } /////////////////////// function testMapList(){ testMethod.testMapList(callbackMethodMapList) } function callbackMethodMapList(data){ for(var property in data){ var bean = data[property]; for(var propertys in bean){ alert(bean[propertys].name+" "+bean[propertys].age); } } } // --></mce:script> </head> <body> <input type="button" name="button" value="测试list" onclick="TestList()"> <input type="button" name="button" value="测试map" onclick="TestMap()"> <input type="button" name="button" value="测试map" onclick="testMapList()"> </body> </html> 在网上看了很多的介绍,但是很多是转载,于是尝试写了下,
后台的java代码
package test; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; public class Test { public List testList() { List<String> list = new LinkedList<String>(); list.add("qincy0"); list.add("qincy1"); list.add("qincy2"); list.add("qincy3"); return list; } public Map testMap() { Map<Integer,String> map = new HashMap<Integer,String>(); map.put(1, "mapqincy1"); return map; } public Map testMapList() { Map<Integer,List<String>> map = new HashMap<Integer,List<String>>(); List<String> list = new LinkedList<String>(); list.add("maplistqincy0"); list.add("maplistqincy1"); list.add("maplistqincy2"); list.add("maplistqincy3"); map.put(12, list); return map; } }
dwr的配置文件
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd"> <dwr> <allow> <create javascript="testMethod" creator="new"> <param name="class" value="test.Test"></param> </create> </allow> </dwr>
前台的JavaScript代码
<%@ page language="java" contentType="text/html; charset=gb2312" pageEncoding="gb2312"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>dwr demo</title> <mce:script type='text/javascript' src="/dwr/dwr/interface/testMethod.js" mce_src="dwr/dwr/interface/testMethod.js"></mce:script> <mce:script type='text/javascript' src="/dwr/dwr/engine.js" mce_src="dwr/dwr/engine.js"></mce:script> <mce:script type='text/javascript' src="/dwr/dwr/util.js" mce_src="dwr/dwr/util.js"></mce:script> <mce:script type="text/javascript"><!-- function TestList(){ testMethod.testList(callbackMethod) } function callbackMethod(data){ for(var property in data){ alert(data[property]); } } //////////////////// function TestMap(){ testMethod.testMap(callbackMethodMap) } function callbackMethodMap(data1){ for(var property in data1){ var bean = data1[property]; alert(bean); } } /////////////////////// function testMapList(){ testMethod.testMapList(callbackMethodMapList) } function callbackMethodMapList(data){ for(var property in data){ var bean = data[property]; for(var propertys in bean){ alert(bean[propertys]); } } } // --></mce:script> </head> <body> <input type="button" name="button" value="测试list" onclick="TestList()"> <input type="button" name="button" value="测试map" onclick="TestMap()"> <input type="button" name="button" value="测试map" onclick="testMapList()"> </body> </html>
后来进行改进,有基本类型改为对象:
后台的java代码(写的很臃肿。。。):
entity 代码
package test; public class User { private String name; private Integer age; public User() { super(); } public User(String name, Integer age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
servlet” 代码:
“package test; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; public class Test { public List testList() { List<User> list = new LinkedList<User>(); User user1 = new User("qincy1", 24); User user2 = new User("qincy2", 25); User user3 = new User("qincy3", 26); User user4 = new User("qincy4", 27); User user5 = new User("qincy5", 28); list.add(user1); list.add(user2); list.add(user3); list.add(user4); list.add(user5); return list; } public Map testMap() { Map<Integer, User> map = new HashMap<Integer, User>(); User user1 = new User("mapqincy1", 24); User user2 = new User("mapqincy2", 25); User user3 = new User("mapqincy3", 26); User user4 = new User("mapqincy4", 27); User user5 = new User("mapqincy5", 28); map.put(1, user1); map.put(2, user2); map.put(3, user3); map.put(4, user4); map.put(5, user5); return map; } public Map testMapList() { Map<Integer, List<User>> map = new HashMap<Integer, List<User>>(); List<User> list = new LinkedList<User>(); User user1 = new User("mapqincy1", 24); User user2 = new User("mapqincy2", 25); User user3 = new User("mapqincy3", 26); User user4 = new User("mapqincy4", 27); User user5 = new User("mapqincy5", 28); list.add(user1); list.add(user2); list.add(user3); list.add(user4); list.add(user5); map.put(1, list); List<User> list1 = new LinkedList<User>(); User user11 = new User("map1qincy1", 24); User user12 = new User("map2qincy2", 25); User user13 = new User("map3qincy3", 26); User user14 = new User("map4qincy4", 27); User user15 = new User("map5qincy5", 28); list1.add(user11); list1.add(user12); list1.add(user13); list1.add(user14); list1.add(user15); map.put(2, list1); return map; } }
DWR 配置文件
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd"> <dwr> <allow> <create javascript="testMethod" creator="new"> <param name="class" value="test.Test"></param> </create> <convert match="test.User" converter="bean"> <param name="include" value="name,age"></param> </convert> </allow> </dwr>
开始我用* 代替 name 与age 发现报错,于是改为详细的。
前台JavaScript 代码;
您还没有登录,请您登录后再发表评论
Direct Web Remoting (DWR) 是一种开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行交互,实现动态Web应用的功能。DWR通过AJAX技术提供了一种简单的方法来调用服务器端的方法并接收返回的结果,极...
本文将深入探讨DWR在Ajax应用中的使用,特别是涉及List、Map等数据结构作为参数和返回值时的处理。 **一、DWR概述** DWR的核心功能是提供了一个动态的JavaScript到Java的桥接,使得客户端能够调用服务器上的方法,...
而对于`Map`,在JavaScript中应使用键值对的JSON对象表示,如`{ "key1": value1, "key2": value2 }`。在示例中,Java的`Map`在JavaScript中表示为`var depts = { "dept1": new department("2", "200"), "dept2": new...
3. **JavaBean的转换与使用**: DWR提供了自动和手动两种方式将JavaBean转换为JavaScript对象。在`dwr.xml`配置文件中,通过`<convert>`标签指定转换规则。例如,转换`com.dwr.TestBean`: ```xml ...
DWR还支持更复杂的数据类型,如数组、集合(List、Set、Map)以及自定义对象。例如,Java方法返回一个`List<JavaBean>`,DWR会将其转换为JavaScript数组,每个元素都是对应的JavaScript对象。你可以在JavaScript中...
一种情况是因为DWR1.0的解析器中有个Bug,在有些场合会无法处理返回值的类型.所以应该要避免这种情况的发生. 一种情况是因为解析器是一个语法宽松的解析器,他不象编译器一样对语法有非常严格的要求,所有有时可能一些...
- **Callable**:与 `Runnable` 类似,但支持返回值,并且可以通过 `Future` 获取结果。 **6. Socket 和 ServerSocket 区别** - **Socket**:用于客户端和服务端之间的双向通信。 - **ServerSocket**:服务端监听...
相关推荐
Direct Web Remoting (DWR) 是一种开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行交互,实现动态Web应用的功能。DWR通过AJAX技术提供了一种简单的方法来调用服务器端的方法并接收返回的结果,极...
本文将深入探讨DWR在Ajax应用中的使用,特别是涉及List、Map等数据结构作为参数和返回值时的处理。 **一、DWR概述** DWR的核心功能是提供了一个动态的JavaScript到Java的桥接,使得客户端能够调用服务器上的方法,...
而对于`Map`,在JavaScript中应使用键值对的JSON对象表示,如`{ "key1": value1, "key2": value2 }`。在示例中,Java的`Map`在JavaScript中表示为`var depts = { "dept1": new department("2", "200"), "dept2": new...
3. **JavaBean的转换与使用**: DWR提供了自动和手动两种方式将JavaBean转换为JavaScript对象。在`dwr.xml`配置文件中,通过`<convert>`标签指定转换规则。例如,转换`com.dwr.TestBean`: ```xml ...
DWR还支持更复杂的数据类型,如数组、集合(List、Set、Map)以及自定义对象。例如,Java方法返回一个`List<JavaBean>`,DWR会将其转换为JavaScript数组,每个元素都是对应的JavaScript对象。你可以在JavaScript中...
一种情况是因为DWR1.0的解析器中有个Bug,在有些场合会无法处理返回值的类型.所以应该要避免这种情况的发生. 一种情况是因为解析器是一个语法宽松的解析器,他不象编译器一样对语法有非常严格的要求,所有有时可能一些...
- **Callable**:与 `Runnable` 类似,但支持返回值,并且可以通过 `Future` 获取结果。 **6. Socket 和 ServerSocket 区别** - **Socket**:用于客户端和服务端之间的双向通信。 - **ServerSocket**:服务端监听...