DWR 调用返回值方法(转载)

本文介绍了使用DWR(Direct Web Remoting)调用不同类型的Java方法,包括简单返回值、简单参数、JavaBean等,并详细说明了XML配置及JavaScript调用过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

xml 代码
  1. 2.调用有简单返回值的java方法    
  2. 2.1、dwr.xml的配置    
  3. 配置同1.1    
  4. <dwr>    
  5. <allow>    
  6. <create creator="new" javascript="testClass" >    
  7. <param name="class" value="com.dwr.TestClass" />    
  8. <include method="testMethod2"/>    
  9. create>    
  10. allow>    
  11. dwr>    
  12. 2.2、javascript中调用    
  13. 首先,引入javascript脚本    
  14. 其次,编写调用java方法的javascript函数和接收返回值的回调函数    
  15. Function callTestMethod2(){    
  16. testClass.testMethod2(callBackFortestMethod2);    
  17. } Function callBackFortestMethod2(data){    
  18. //其中date接收方法的返回值    
  19. //可以在这里对返回值进行处理和显示等等    
  20. alert("the return value is " + data);    
  21. } 其中callBackFortestMethod2是接收返回值的回调函数   
  22.   
  23. 3、调用有简单参数的java方法    
  24. 3.1、dwr.xml的配置    
  25. 配置同1.1    
  26. <dwr>    
  27. <allow>    
  28. <create creator="new" javascript="testClass" >    
  29. <param name="class" value="com.dwr.TestClass" />    
  30. <include method="testMethod3"/>    
  31. create>    
  32. allow>    
  33. dwr>    
  34. 3.2、javascript中调用    
  35. 首先,引入javascript脚本    
  36. 其次,编写调用java方法的javascript函数    
  37. Function callTestMethod3(){    
  38. //定义要传到java方法中的参数    
  39. var data;    
  40. //构造参数    
  41. data = “test String”;    
  42. testClass.testMethod3(data);    
  43. }   
  44.   
  45. 4、调用返回JavaBean的java方法    
  46. 4.1、dwr.xml的配置    
  47. <dwr>    
  48. <allow>    
  49. <create creator="new" javascript="testClass" >    
  50. <param name="class" value="com.dwr.TestClass" />    
  51. <include method="testMethod4"/>    
  52. create>    
  53. <convert converter="bean" match=""com.dwr.TestBean">    
  54. <param name="include" value="username,password" />    
  55. convert>    
  56. allow>    
  57. dwr>    
  58. <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属性。    
  59. 4.2、javascript中调用    
  60. 首先,引入javascript脚本    
  61. 其次,编写调用java方法的javascript函数和接收返回值的回调函数    
  62. Function callTestMethod4(){    
  63. testClass.testMethod4(callBackFortestMethod4);    
  64. } Function callBackFortestMethod4(data){    
  65. //其中date接收方法的返回值    
  66. //对于JavaBean返回值,有两种方式处理    
  67. //不知道属性名称时,使用如下方法    
  68. for(var property in data){    
  69. alert("property:"+property);    
  70. alert(property+":"+data[property]);    
  71. }    
  72. //知道属性名称时,使用如下方法    
  73. alert(data.username);    
  74. alert(data.password);    
  75. } 其中callBackFortestMethod4是接收返回值的回调函数   
  76.   
  77. 5、调用有JavaBean参数的java方法    
  78. 5.1、dwr.xml的配置    
  79. 配置同4.1    
  80. <dwr>    
  81. <allow>    
  82. <create creator="new" javascript="testClass" >    
  83. <param name="class" value="com.dwr.TestClass" />    
  84. <include method="testMethod5"/>    
  85. create>    
  86. <convert converter="bean" match="com.dwr.TestBean">    
  87. <param name="include" value="username,password" />    
  88. convert>    
  89. allow>    
  90. dwr>    
  91. 5.2、javascript中调用    
  92. 首先,引入javascript脚本    
  93. 其次,编写调用java方法的javascript函数    
  94. Function callTestMethod5(){    
  95. //定义要传到java方法中的参数    
  96. var data;    
  97. //构造参数,date实际上是一个object    
  98. data = { username:"user", password:"password" }    
  99. testClass.testMethod5(data);    
  100. }   
  101.   
  102. 6、调用返回List、Set或者Map的java方法    
  103. 6.1、dwr.xml的配置    
  104. 配置同4.1    
  105. <dwr>    
  106. <allow>    
  107. <create creator="new" javascript="testClass" >    
  108. <param name="class" value="com.dwr.TestClass" />    
  109. <include method="testMethod6"/>    
  110. create>    
  111. <convert converter="bean" match="com.dwr.TestBean">    
  112. <param name="include" value="username,password" />    
  113. convert>    
  114. allow>    
  115. dwr>    
  116. 注意:如果List、Set或者Map中的元素均为简单类型(包括其封装类)或String、Date、数组和集合类型,则不需要<convert>标签。    
  117. 6.2、javascript中调用(以返回List为例,List的元素为TestBean)    
  118. 首先,引入javascript脚本    
  119. 其次,编写调用java方法的javascript函数和接收返回值的回调函数    
  120. Function callTestMethod6(){    
  121. testClass.testMethod6(callBackFortestMethod6);    
  122. } Function callBackFortestMethod6(data){    
  123. //其中date接收方法的返回值    
  124. //对于JavaBean返回值,有两种方式处理    
  125. //不知道属性名称时,使用如下方法    
  126. for(var i=0;i<data.length;i++){    
  127. for(var property in data){    
  128. alert("property:"+property);    
  129. alert(property+":"+data[property]);    
  130. }    
  131. } //知道属性名称时,使用如下方法    
  132. for(var i=0;i<data.length;i++){    
  133. alert(data.username);    
  134. alert(data.password);    
  135. } }   
  136.   
  137. 7、调用有List、Set或者Map参数的java方法    
  138. 7.1、dwr.xml的配置    
  139. <dwr>    
  140. <allow>    
  141. <create creator="new" javascript="testClass" >    
  142. <param name="class" value="com.dwr.TestClass" />    
  143. <include method="testMethod7"/>    
  144. create>    
  145. <convert converter="bean" match="com.dwr.TestBean">    
  146. <param name="include" value="username,password" />    
  147. convert>    
  148. allow>    
  149. <signatures>    
  150.  
  151. import java.util.List;   
  152. import com.dwr.TestClass;   
  153. import com.dwr.TestBean;   
  154. TestClass.testMethod7(List<testbean></testbean>);   
  155. ]]>    
  156. signatures>    
  157. dwr>    
  158. <signatures>标签是用来声明java方法中List、Set或者Map参数所包含的确切类,以便java代码作出判断。    
  159. 7.2、javascript中调用(以返回List为例,List的元素为TestBean)    
  160. 首先,引入javascript脚本    
  161. 其次,编写调用java方法的javascript函数    
  162. Function callTestMethod7(){    
  163. //定义要传到java方法中的参数    
  164. var data;    
  165. //构造参数,date实际上是一个object数组,即数组的每个元素均为object    
  166. data = [    
  167. {    
  168. username:"user1",    
  169. password:"password2"    
  170. },    
  171. {    
  172. username:"user2",    
  173. password:" password2"    
  174. }    
  175. ];    
  176. testClass.testMethod7(data);    
  177. }   
  178.   
  179. 注意:    
  180. 1、对于第6种情况,如果java方法的返回值为Map,则在接收该返回值的javascript回调函数中如下处理:    
  181. function callBackFortestMethod(data){    
  182. //其中date接收方法的返回值    
  183. for(var property in data){    
  184. var bean = data[property];    
  185. alert(bean.username);    
  186. alert(bean.password);    
  187. }    
  188. } 2、对于第7种情况,如果java的方法的参数为Map(假设其key为String,value为TestBean),则在调用该方法的javascript函数中用如下方法构造要传递的参数:    
  189. function callTestMethod (){    
  190. //定义要传到java方法中的参数    
  191. var data;    
  192. //构造参数,date实际上是一个object,其属性名为Map的key,属性值为Map的value    
  193. data = {    
  194. "key1":{    
  195. username:"user1",    
  196. password:"password2"    
  197. },    
  198. "key2":{    
  199. username:"user2",    
  200. password:" password2"    
  201. }    
  202. };    
  203. testClass.testMethod(data);    
  204. } 并且在dwr.xml中增加如下的配置段    
  205. <signatures>    
  206.  
  207. import java.util.List;   
  208. import com.dwr.TestClass;   
  209. import com.dwr.TestBean;   
  210. TestClass.testMethod7(Map);   
  211. ]]>    
  212. signatures>    
  213. 3、由以上可以发现,对于java方法的返回值为List(Set)的情况,DWR将其转化为Object数组,传递个javascript;对于java方法的返回值为Map的情况,DWR将其转化为一个Object,其中Object的属性为原Map的key值,属性值为原Map相应的value值。    
  214. 4、如果java方法的参数为List(Set)和Map的情况,javascript中也要根据3种所说,构造相应的javascript数据来传递到java中。   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值