DWR中处理List2007-12-20 12:314、调用返回JavaBean的java方法
4.1、dwr.xml的配置
<dwr>
<allow>
<create creator="new" javascript="testClass" >
<param name="class" value="com.dwr.TestClass" />
<include method="testMethod4"/>
</create>
<convert converter="bean" match=""com.dwr.TestBean">
<param name="include" value="username,password" />
</convert>
</allow>
</dwr>
<creator>标签负责公开用于Web远程的类和类的方法,<convertor>标签则负责这些方法的参数和返回类型。
convert元素的作用是告诉DWR在服务器端Java 对象表示和序列化的JavaScript之间如何转换数据类型。
DWR自动地在Java和JavaScript表示之间调整简单数据类型。
这些类型包括Java原生类型和它们各自的封装类表示,还有String、Date、数组和集合类型。
DWR也能把JavaBean转换成JavaScript 表示,但是出于安全性的原因,要求显式的配置,<convertor>标签就是完成此功能的。
Converter="bean"属性指定转换的方式采用JavaBean命名规范,match=""com.dwr.TestBean"属性指定要转换的javabean名称,<param>标签指定要转换的JavaBean属性。
4.2、javascript中调用
首先,引入javascript脚本
其次,编写调用java方法的javascript函数和接收返回值的回调函数
Function callTestMethod4(){
testClass.testMethod4(callBackFortestMethod4);
}
Function callBackFortestMethod4(data){
//其中date接收方法的返回值
//对于JavaBean返回值,有两种方式处理
//不知道属性名称时,使用如下方法
for(var property in data){
alert("property:"+property);
alert(property+":"+data[property]);
}
//知道属性名称时,使用如下方法
alert(data.username);
alert(data.password);
} 其中callBackFortestMethod4是接收返回值的回调函数
5、调用有JavaBean参数的java方法
5.1、dwr.xml的配置配置同4.1
<dwr>
<allow>
<create creator="new" javascript="testClass" >
<param name="class" value="com.dwr.TestClass" />
<include method="testMethod5"/>
</create>
<convert converter="bean" match="com.dwr.TestBean">
<param name="include" value="username,password" />
</convert>
</allow>
</dwr>
5.2、javascript中调用
首先,引入javascript脚本
其次,编写调用java方法的javascript函数
Function callTestMethod5(){
//定义要传到java方法中的参数
var data;
//构造参数,date实际上是一个object
data = { username:"user", password:"password" }
testClass.testMethod5(data);
}
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[i].username);//this is ok
alert(data.password);//error
}
}
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){
//其中date接收方法的返回值
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 (){
//定义要传到java方法中的参数
var data;
//构造参数,date实际上是一个object,其属性名为Map的key,属性值为Map的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中。
分享到:
相关推荐
在这个场景中,"dwr查询返回list处理"涉及到的关键知识点包括: 1. **DWR的配置**:在使用DWR之前,需要在Web应用的配置文件(如`dwr.xml`)中声明允许被远程调用的Java类和方法。这样,DWR引擎才能知道哪些Java...
这篇博客文章“关于使用DWR返回对象List的方法”主要探讨了如何通过DWR框架在Java后端处理数据并以List对象的形式返回给前端JavaScript。 在Web开发中,通常我们需要从服务器获取数据并在客户端展示,DWR通过AJAX...
1. **处理List**: 当Java方法的参数是一个`List`时,JavaScript端可以将对象包装在数组中传递。例如,如果你有一个包含用户信息的`List`,在JavaScript中可以这样创建数据: ```javascript var users = [ {username...
通过这个项目,我们可以了解到DWR如何与AJAX结合,实现实时的数据交互,以及如何利用DWR处理二级联动效果。这个例子展示了Java后端与JavaScript前端之间的紧密协作,使用户能够在不刷新页面的情况下获取并显示动态...
在这个场景中,我们关注的是如何在DWR回调函数中处理从服务器返回的`List<Bean>`类型的数据。 首先,我们需要在服务器端定义一个Java方法,该方法会返回一个`List<Bean>`。例如,假设我们有一个名为`User`的Java ...
// 在此处处理list数据,比如渲染到页面 for (var i = 0; i < list.length; i++) { var item = list[i]; // 假设item有一个名为name的属性 document.getElementById('container').innerHTML += '<div>' + item....
在这个“dwr入门例子 返回list”中,我们学习了如何使用DWR从服务器获取列表数据,并在客户端进行处理和展示。这只是一个基础示例,实际应用中,DWR还能处理更复杂的交互,如文件上传、实时数据推送等,进一步提升...
在这个"DWR Demo"中,我们将会探讨如何使用DWR框架来处理和展示常见的数据结构,如List、Set和Map。 首先,让我们深入了解DWR的核心功能。DWR允许Java方法直接被JavaScript调用,就像它们是本地函数一样,无需手动...
在这个项目中,DWR被用来实现在不刷新整个页面的情况下,从后台获取list数据并动态地在表格中展示,同时还有二级联动功能的实现,增加了用户操作的便捷性。下面我们将深入探讨这个项目的各个关键技术点。 首先,DWR...
在这个实例中,我们将探讨DWR如何处理List、Map以及数组等常见的数据结构。 首先,让我们理解DWR的核心功能。DWR的主要作用是创建一个安全、高效的桥梁,使得JavaScript可以直接调用服务器端的Java方法,而无需进行...
在DWR中,处理各种类型的返回值是其强大功能的一部分,它支持多种数据类型,包括基本类型、对象、数组、集合、Map等。下面将详细介绍DWR如何处理这些不同类型的返回值。 1. **基本类型**: DWR可以轻松处理Java的...
在这个"**dwr.rar_dwr_dwr Stri_dwr javabean**"的压缩包中,我们可能找到了关于DWR如何处理不同类型数据的详细信息,特别是对String、list、map以及JavaBean的操作。 首先,让我们深入理解DWR的核心概念。DWR的...
在DWR中,"返回字符串&对象&列表"是指DWR接口可以处理多种类型的数据返回。下面将详细介绍DWR如何处理这些不同类型的数据: 1. **返回字符串**: 在DWR中,如果你的Java方法返回一个字符串,这个字符串会直接在...
2. **Java类与Bean**:描述中提到的"调用后台java类返回List,List中存放自定义的javabean",这意味着后端有一个Java类,它可能包含一个或多个方法,这些方法返回一个包含自定义Java Bean的List。Java Bean是一种...
JavaScript端将接收到一个数组,数组的每个元素对应于List中的一个对象。 2. 返回Map:Java端创建Map并填充分配好的键值对,通过DWR调用返回。在JavaScript端,这将表现为一个JavaScript对象,其中的属性名对应于Map...
DWR,全称为Direct Web Remoting,是一种在Web应用中实现JavaScript与服务器端Java代码进行异步通信的技术。它允许开发者在浏览器端直接调用服务器上的Java方法,就像本地JavaScript函数一样,极大地提高了Web应用的...
- 定义了URL映射,所有以`/dwr/`开头的请求都将由DWR处理。 2. **配置dwr.xml:** ```xml <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD DirectWebRemoting 2.0//EN" ...
在这个主题“简单DWR动态下拉菜单”中,我们将深入探讨如何利用DWR来创建一个动态更新的下拉菜单,该菜单可以根据用户的选择即时从服务器获取并显示数据。 首先,DWR的核心是其反向Ajax(Reverse Ajax)技术,它...
调用带List、Set或Map参数的方法,如`callTestMethod7`,需要创建相应的JavaScript对象数组,每个元素对应List中的一个项,属性与JavaBean一致。在`dwr.xml`中需要声明这些参数的类,以便Java端解析。 在使用DWR时...