dwr 回调函数
来源:互联网 发布:大象册同类软件 编辑:程序博客网 时间:2024/04/29 17:10
dwr使用篇
1、调用没有返回值和参数的JAVA方法
1.1、dwr.xml的配置
<allow> 标签中包括可以暴露给 javascript 访问的东西。
<create> 标签中指定 javascript 中可以访问的 java 类,并定义 DWR 应当如何获得要进行远程的类的实例。 creator="new" 属性指定 java 类实例的生成方式, new 意味着 DWR 应当调用类的默认构造函数来获得实例,其他的还有 spring 方式,通过与 IOC 容器 Spring 进行集成来获得实例等等。 javascript=" testClass " 属性指定 javascript代码访问对象时使用的名称。
<param> 标签指定要公开给 javascript 的 java 类名。
<include> 标签指定要公开给 javascript 的方法。不指定的话就公开所有方法。
<exclude> 标签指定要防止被访问的方法。
1.2、javascript中调用
首先,引入 javascript 脚本
其次,编写调用 java 方法的 javascript 函数
2、调用有简单返回值的java方法
2.1、dwr.xml的配置
配置同1.1
2.2、javascript中调用
首先,引入 javascript 脚本
其次,编写调用 java 方法的 javascript 函数和接收返回值的回调函数
其中 callBackFortestMethod2 是接收返回值的回调函数
3、调用有简单参数的java方法
3.1、dwr.xml的配置
配置同1.1
3.2、javascript中调用
首先,引入 javascript 脚本
其次,编写调用 java 方法的 javascript 函数
4、调用返回JavaBean的java方法
4.1、dwr.xml的配置
<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 函数和接收返回值的回调函数
5、调用有JavaBean参数的java方法
5.1、dwr.xml的配置
配置同4.1
5.2 、javascript中调用
首先,引入 javascript 脚本
其次,编写调用 java 方法的 javascript 函数
6、调用返回List、Set或者Map的java方法
6.1、dwr.xml的配置
配置同4.1
6.2 、javascript中调用(以返回List为例,List的元素为TestBean)
首先,引入 javascript 脚本
其次,编写调用 java 方法的 javascript 函数和接收返回值的回调函数
7、调用有List、Set或者Map参数的java方法
7.1、dwr.xml的配置
<signatures> 标签是用来声明 java 方法中 List 、 Set 或者 Map 参数所包含的确切类,以便 java 代码作出判断。
7.2 、javascript中调用(以返回List为例,List的元素为TestBean)
首先,引入 javascript 脚本
其次,编写调用 java 方法的 javascript 函数
1、 对于第 6 种情况,如果 java 方法的返回值为 Map ,则在接收该返回值的 javascript 回调函数中如下处理:
2、 对于第 7 种情况,如果 java 的方法的参数为 Map (假设其 key 为 String , value 为 TestBean ),则在调用该方法的 javascript 函数中用如下方法构造要传递的参数:
并且在 dwr.xml 中增加如下的配置段
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 中。
1、调用没有返回值和参数的JAVA方法
1.1、dwr.xml的配置
- <dwr>
- <allow>
- <create creator="new" javascript="testClass" >
- <param name="class" value= "com.dwr.TestClass" />
- <include method="testMethod1"/>
- </create>
- </allow>
- </dwr>
<dwr><allow><create creator="new" javascript="testClass" ><param name="class" value= "com.dwr.TestClass" /><include method="testMethod1"/></create></allow></dwr>
<allow> 标签中包括可以暴露给 javascript 访问的东西。
<create> 标签中指定 javascript 中可以访问的 java 类,并定义 DWR 应当如何获得要进行远程的类的实例。 creator="new" 属性指定 java 类实例的生成方式, new 意味着 DWR 应当调用类的默认构造函数来获得实例,其他的还有 spring 方式,通过与 IOC 容器 Spring 进行集成来获得实例等等。 javascript=" testClass " 属性指定 javascript代码访问对象时使用的名称。
<param> 标签指定要公开给 javascript 的 java 类名。
<include> 标签指定要公开给 javascript 的方法。不指定的话就公开所有方法。
<exclude> 标签指定要防止被访问的方法。
1.2、javascript中调用
首先,引入 javascript 脚本
- <script src='dwr/interface/ testClass.js'></script>
- <script src='dwr/engine.js'></script>
- <script src='dwr/util.js'></script>
<script src='dwr/interface/ testClass.js'></script><script src='dwr/engine.js'></script><script src='dwr/util.js'></script>其中 TestClass.js 是 dwr 根据配置文件自动生成的, engine.js 和 util.js 是 dwr 自带的脚本文件。
其次,编写调用 java 方法的 javascript 函数
- Function callTestMethod1(){
- testClass.testMethod1();
- }
Function callTestMethod1(){ testClass.testMethod1();}
2、调用有简单返回值的java方法
2.1、dwr.xml的配置
配置同1.1
- <dwr>
- <allow>
- <create creator="new" javascript="testClass" >
- <param name="class" value= "com.dwr.TestClass" />
- <include method="testMethod2"/>
- </create>
- </allow>
- </dwr>
<dwr><allow><create creator="new" javascript="testClass" ><param name="class" value= "com.dwr.TestClass" /><include method="testMethod2"/></create></allow></dwr>
2.2、javascript中调用
首先,引入 javascript 脚本
其次,编写调用 java 方法的 javascript 函数和接收返回值的回调函数
- Function callTestMethod2(){
- testClass.testMethod2(callBackFortestMethod2);
- }
- Function callBackFortestMethod2(data){
- // 其中 date 接收方法的返回值
- // 可以在这里对返回值进行处理和显示等等
- alert("the return value is " + data);
- }
Function callTestMethod2(){ testClass.testMethod2(callBackFortestMethod2);}Function callBackFortestMethod2(data){ // 其中 date 接收方法的返回值 // 可以在这里对返回值进行处理和显示等等alert("the return value is " + data);}
其中 callBackFortestMethod2 是接收返回值的回调函数
3、调用有简单参数的java方法
3.1、dwr.xml的配置
配置同1.1
- <dwr>
- <allow>
- <create creator="new" javascript="testClass" >
- <param name="class" value= "com.dwr.TestClass" />
- <include method="testMethod3"/>
- </create>
- </allow>
- </dwr>
<dwr><allow><create creator="new" javascript="testClass" ><param name="class" value= "com.dwr.TestClass" /><include method="testMethod3"/></create></allow></dwr>
3.2、javascript中调用
首先,引入 javascript 脚本
其次,编写调用 java 方法的 javascript 函数
- Function callTestMethod3(){
- // 定义要传到 java 方法中的参数
- var data;
- // 构造参数
- data = “test String”;
- testClass.testMethod3(data);
- }
Function callTestMethod3(){ // 定义要传到 java 方法中的参数 var data; // 构造参数 data = “test String”; testClass.testMethod3(data);}
4、调用返回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>
<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);
- }
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>
<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);
- }
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>
<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);
- }
- }
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>
<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);
- }
Function callTestMethod7(){// 定义要传到 java 方法中的参数 var data; // 构造参数, date 实际上是一个 object 数组,即数组的每个元素均为 objectdata = [ { 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);
- }
- }
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);
- }
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>
<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 回调函数
- dwr回调函数设置参数
- dwr中回调函数带参数写法
- DWR 回调函数与主函数变量传递
- DWR 同步操作, 取得回调函数的返回值
- dwr回调函数不执行的问题
- 在回调函数外访问dwr返回值
- JS不能得到Dwr中回调函数中的内容
- 使用Extjs周期性调用dwr回调函数
- DWR学习2-回调函数异步问题
- DWR 同步操作, 取得回调函数的返回值
- 使用同步获取DWR回调函数的返回值
- DWR基本环境配置,回调函数不执行问题
- 如何在dwr的回调函数中传递多个参数
- 利用DWR处理回调函数返回的list集合,并填充select
- 使用DWR时,回调函数的返回值没法赋给js中的全局变量
- 为DWR回调函数传多个参数
- 为DWR回调函数传多个参数
- HDU 2051 - Bitset
- 剑指Offer之翻转单词顺序
- 在Apache及IIS6.0中codeigniter去掉 URL 中的 index.php
- 百度新营销:不只是关键词了
- Oracle确定过期的统计信息
- dwr 回调函数
- C语言读取位图
- Java中getResourceAsStream的用法
- Advance Course of ontological Engineering 本体工程高级
- java 中List<Byte> 转 byte[]
- json数组对象和对象数组
- The DATASTRUCTRUE homework --- 随笔啦
- Styles and Themes//风格和主题
- ARM9的存储组织结构之I/O端口的访问方式