6、调用返回List、Set或者Map的java方法
6.1、dwr.xml的配置
配置同4.1
<dwr>
<allow>
<create creator="new" javascript="testClass" >
<param name="class" value= "com.dwr.TestClass" />
<include method="testMethod6"/>
</create>
<convert converter="bean" match= "com.dwr.TestBean ">
<param name="include" value="username,password" />
</convert>
</allow>
</dwr>
注意:如果 List 、 Set 或者 Map 中的元素均为简单类型(包括其封装类)或 String 、 Date 、数组和集合类型,则不需要<convert>标签。
6.2 、javascript中调用(以返回List为例,List的元素为TestBean)
首先,引入 javascript 脚本
其次,编写调用 java 方法的 javascript 函数和接收返回值的回调函数
Function callTestMethod6(){
testClass.testMethod6(callBackFortestMethod6);
}
Function callBackFortestMethod6(data){
// 其中 date 接收方法的返回值
// 对于 JavaBean 返回值,有两种方式处理
for(var i=0;i<data.length;i++){
for(var property in data){
alert("property:"+property);
alert(property+":"+data[property]);
}
}
for(var i=0;i<data.length;i++){
alert(data.username);
alert(data.password);
}
}
7、调用有List、Set或者Map参数的java方法
7.1、dwr.xml的配置
<dwr>
<allow>
<create creator="new" javascript="testClass" >
<param name="class" value= "com.dwr.TestClass" />
<include method="testMethod7"/>
</create>
<convert converter="bean" match= "com.dwr.TestBean ">
<param name="include" value="username,password" />
</convert>
</allow>
<signatures>
<![CDATA[
import java.util.List;
import com.dwr.TestClass;
import com.dwr.TestBean;
TestClass.testMethod7(List<TestBean>);
]]>
</signatures>
</dwr>
<signatures> 标签是用来声明 java 方法中 List 、 Set 或者 Map 参数所包含的确切类,以便 java 代码作出判断。
7.2 、javascript中调用(以返回List为例,List的元素为TestBean)
首先,引入 javascript 脚本
其次,编写调用 java 方法的 javascript 函数
Function callTestMethod7(){
// 定义要传到 java 方法中的参数
var data;
// 构造参数, date 实际上是一个 object 数组,即数组的每个元素均为 object
data = [
{
username:"user1",
password:"password2"
},
{
username:"user2",
password:" password2"
}
];
testClass.testMethod7(data);
}
注意:
1、 对于第 6 种情况,如果 java 方法的返回值为 Map ,则在接收该返回值的 javascript 回调函数中如下处理:
function callBackFortestMethod(data){
接收方法的返回值
for(var property in data){
var bean = data[property];
alert(bean.username);
alert(bean.password);
}
}
2、 对于第 7 种情况,如果 java 的方法的参数为 Map (假设其 key 为 String , value 为 TestBean ),则在调用该方法的 javascript 函数中用如下方法构造要传递的参数:
function callTestMethod (){
方法中的参数
var data;
实际上是一个 的 的 value
data = {
"key1":{
username:"user1",
password:"password2"
},
"key2":{
username:"user2",
password:" password2"
}
};
testClass.testMethod(data);
}
并且在 dwr.xml 中增加如下的配置段
<signatures>
<![CDATA[
import java.util.List;
import com.dwr.TestClass;
import com.dwr.TestBean;
TestClass.testMethod7(Map<String,TestBean>);
]]>
</signatures>
3、 由以上可以发现,对于 java 方法的返回值为 List(Set) 的情况, DWR 将其转化为 Object 数组,传递个 javascript ;对于 java 方法的返回值为 Map 的情况, DWR 将其转化为一个 Object ,其中 Object 的属性为原 Map 的 key 值,属性值为原 Map 相应的 value 值。
4、 如果 java 方法的参数为 List(Set) 和 Map 的情况, javascript 中也要根据 3 种所说,构造相应的 javascript 数据来传递到 java 中。
贴子来源Diy部落(http://bbs.diybl.com) 详细出处参考:http://bbs.diybl.com/10/20090820/5040.html
分享到:
相关推荐
2. **创建Java服务端接口**:为了使DWR工作,你需要在服务器端创建一个Java类,该类包含将被调用的方法,比如返回List、Set或Map的实例。这些方法可能从数据库或其他数据源获取数据。 3. **JavaScript调用**:在...
当Java方法返回List、Set或Map时,如`callTestMethod6`,返回的数据可以通过回调函数`callBackFortestMethod6`获取。如果列表元素是基本类型或特定复杂类型,无需在`dwr.xml`中特别声明。 7. **有List、Set或Map...
通过上述示例可以看出,在DWR中处理List、Set和Map等集合类型的关键在于正确配置DWR XML文件,并编写合适的客户端JavaScript代码来调用服务端的方法及处理返回的数据。这种方式大大简化了前后端之间的数据交换过程,...
2. 返回Map:Java端创建Map并填充分配好的键值对,通过DWR调用返回。在JavaScript端,这将表现为一个JavaScript对象,其中的属性名对应于Map的键,属性值对应于Map的值。 五、获得DWR上下文代码 DWR上下文(DWR...
例如,Java方法返回一个`List<JavaBean>`,DWR会将其转换为JavaScript数组,每个元素都是对应的JavaScript对象。你可以在JavaScript中使用`for`循环遍历并访问这些对象。 此外,DWR提供了错误处理、安全控制、缓存...
当Java方法返回`List`、`Map`或`Set`等集合类型时,DWR同样会自动转换成JavaScript数组或对象。对于`List`,JavaScript端会得到一个数组,可以使用数组方法进行操作;对于`Map`,会转换为JavaScript对象,可以通过...
DWR同样支持List、Set等集合类型的返回。比如返回一个ArrayList,在JavaScript端,这个集合会被转换为JavaScript数组,可以遍历和操作。`data.forEach(function(user){console.log(user.name);});` 5. **Map**: ...
6、以上所有类型的集合,List,Set,Map(有些局限性) However nothing is added to the list of classes that can be created (i.e. put up for remoting) without you declaring it. 2、 The Converters DWR已经默认...
DWR (Direct Web Remoting) 是一个简化Ajax开发的框架,它允许JavaScript直接调用服务器端的Java方法,从而实现更简洁、更高效的前后端交互模式。本文将通过分析提供的DWR实例代码来深入理解DWR的工作原理以及如何在...
2. **JavaScript调用Java方法**:掌握使用DWR的`DWREngine`和`RemoteProxy`对象调用服务器端方法的语法,以及如何传递参数,包括基本类型、对象、数组和Map。 3. **参数传递**:学习如何处理不同类型的参数,如字符...
dwr(Direct Web Remoting)是一个开源项目,它使得在浏览器中直接调用服务器端的方法成为可能。通过dwr,开发者可以在客户端使用JavaScript直接访问服务器上的Java对象和方法,极大地简化了前端与后端之间的交互...
5. **集合框架**:熟悉Java集合框架,如List、Set、Map及其相关接口和实现类的使用。 6. **I/O与NIO**:理解Java的输入输出流和新引入的非阻塞I/O(New IO)框架。 【Jquery】是一个广泛使用的JavaScript库,简化...
1. **Java基础**:Java语言的基础语法、面向对象特性(封装、继承、多态)、异常处理、集合框架(List、Set、Map)、IO流、多线程、反射等是Java程序员必须掌握的基本功。 2. **Java图形编程**:Java提供了丰富的API...
**DWR**(Direct Web Remoting)是一个开放源代码的JavaScript库与服务器端Java组件的结合体,它能够使得客户端可以直接调用服务器端的Java方法,简化了传统Ajax应用中JSON数据传输的复杂性,从而极大地提高了开发...
- Java集合框架提供了多种容器,如List(ArrayList, LinkedList)、Set(HashSet, TreeSet)、Map(HashMap, TreeMap, ConcurrentHashMap)等,每种都有其特定的应用场景。 7. **HashMap与Hashtable的区别**: - ...
- 掌握接口如List、Set、Map,以及迭代器(Iterator)和枚举(Enumeration)的使用。 **3. 界面编程(了解)** - **AWT**:了解基本的窗口和组件,如Frame、Button、Label等。 - **事件机制**:理解事件监听和...