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 中。
分享到:
相关推荐
在"Dwr demo - Dwr简单使用"这个项目中,你可以通过以下步骤了解和学习DWR的基本用法: 1. **环境准备**:首先确保你有Eclipse IDE,并且已经安装了Java Development Kit (JDK)。由于DWR是一个Java库,所以你需要一...
DWR(Direct Web Remoting)是一个web远程调用框架,利用这个框架可以让AJAX变得很简单,通过DWR可以在客户端通过JavaScript直接调用服务器的Java方法并返回值给JavaScript,整个过程就好像通过本地客户端调用一样,...
在"Dwr扥一个DEMO"项目中,你可以直接将"DWRDemo"导入MyEclipse这样的集成开发环境(IDE),以便于进行开发和调试。MyEclipse是一款功能强大的Java EE集成开发工具,对各种Web应用框架如Spring、Struts、Hibernate等...
- "DWRDemo"项目是一个实例,展示了如何在MyEclipse环境中集成DWR并创建一个简单的应用。 - 内含的PDF文档可能包含了项目介绍、安装步骤、配置教程和示例代码解析。 通过这个DEMO,开发者不仅可以了解DWR的基本...
- 一个简单的DWR配置文件(如`dwr.xml`),定义了可被调用的Java类和方法。 - 一个Java类(如`ServerService.java`),包含供客户端调用的方法。 - 一个HTML页面(如`index.html`),使用JavaScript调用DWR服务并...
(参考:http://www.cnblogs.com/cyjch/archive/2012/02/16/2353758.html) DWR框架简单Demo,主要是用户注册的例子。 感谢原博主的分享!(附上我测试成功的Demo)
总的来说,"DWR应用简单Demo"是一个学习DWR的起点,通过这个例子,你可以了解到如何设置和使用DWR进行异步通信,以及如何在客户端和服务器端之间传递数据。对于想要提升Web应用交互性的开发者来说,掌握DWR是非常有...
在`dwr_demo_test`中,可能演示了如何使用DWR实现一个简单的交互功能,如动态加载数据、实时验证用户输入等。 6. **DWR的优点**: - **易用性**:DWR的API设计简洁,易于理解和使用。 - **性能**:由于减少了HTTP...
DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://www.getahead.ltd.uk/dwr/dwr30.dtd"> <dwr> <allow> <param name="class" value="com.aftvc.dao.UserDaoImpl"></...
- **Servlet**: DWR提供了一个Servlet,通常配置在Web应用的web.xml中,用于处理客户端的请求和返回结果。 - **AutoComplete和LiveForm**: 这是DWR提供的一些高级组件,如自动完成(AutoComplete)功能和实时表单...
在这个"dwrc的一个小demo"中,我们很显然会看到一个使用DWR 3.0框架的基础示例。DWR 3.0版本是一个重要的升级,提供了更多的特性以及对现代Web开发的更好支持。 首先,我们需要理解DWR的核心概念。DWR允许我们在...
在你提供的资源"一个Dwr的demo"中,这是一个面向初学者的教学示例,旨在展示如何使用DWR来实现动态网页功能。这个Demo将帮助你理解DWR的基本工作原理,以及如何在实际项目中集成和使用它。下面我们将深入探讨DWR的...
在这个"**dwr_test**"项目中,可能包含了一个简单的JSP页面作为客户端,以及相应的Java后台服务。 在客户端的JSP页面中,DWR通常会通过JavaScript API创建一个异步调用,该调用与服务器端的Java方法绑定。当服务器...
这个“一个DWR最简单的例子”为我们提供了一个直观的学习DWR如何工作的起点。 首先,DWR的核心概念是远程方法调用(Remote Method Invocation, RMI)。在传统的Web应用中,JavaScript主要处理前端交互,而服务器端...
在"DWR框架 DEMO"项目中,我们可以看到一个DWR的简单示例。`DWRDemo`可能包含以下组成部分: 1. **Java后端**:定义了一个或多个Java类,其中包含了可供客户端调用的方法。这些方法通常处理业务逻辑,比如数据库...
这个“ajax的dwr框架的一个简单的demo”是一个示例项目,用于展示如何在Web应用程序中集成DWR以实现异步数据通信。 在Java开发中,DWR提供了方便的API,使得JavaScript可以调用服务器端的Java方法,而无需传统的...
DWRTest这个压缩包文件很可能是包含了一个简单的DWR应用示例。可能的文件结构如下: - `DWRTest/`:项目根目录 - `WEB-INF/`:Web应用的配置和库文件 - `web.xml`:Web应用的部署描述符,配置DWR的Servlet - `...
下面将详细阐述DWR长连接的工作原理、优势、配置以及如何创建一个简单的DWR长连接示例。 1. DWR长连接工作原理: DWR利用HTTP的长轮询或者Streaming模式实现长连接。在传统的HTTP请求中,客户端发起请求,服务器...