DWR 調用返回值方法(轉載)

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中。   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章