在使用dwr避免不了碰到javabean中有对象作为参数的,那么这样的方法怎么在js中调用呢?

       就这个问题,做了一个小例子,与大家分享一下:

 

[java] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <span style="font-size:18px;">package com.tgb.dwr;  
  2.   
  3. /** 
  4.  * dwr使用测试 
  5.  * @author Admin 
  6.  * 
  7.  */  
  8. public class DwrTest {  
  9.     public String hellobody(User user){  
  10.         return "Hello,"+user.getName()+",恭喜你今年"+user.getAge()+"岁";  
  11.     }  
  12.     public User getUser(){  
  13.         User user = new User();  
  14.         user.setName("Arron");  
  15.         user.setAge(10);  
  16.         return user;  
  17.     }  
  18. }  
  19.   
  20. public class User {  
  21.     private String name;  
  22.     private int age;  
  23.     //省略set和get方法  
  24. }</span>  

 

 

       dwr.xml的配置如下:

 

[html] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">  
  3. <dwr>  
  4.     <allow>  
  5.       <create javascript="T1" creator="new">  
  6.         <param name="class" value="com.tgb.dwr.DwrTest"/>  
  7.       </create>  
  8.       <convert match="com.tgb.dwr.User" converter="bean">  
  9.         <param name="include" value="name,age"></param>  
  10.       </convert>  
  11.     </allow>  
  12.   
  13. </dwr>  
  14. </span>  


       js代码如下:

 

 

[html] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <span style="font-size:18px;"><script type="text/javascript">  
  2. function test1(){  
  3.     var userdata;  
  4.     userdata = {name:"Arron", age:"10"};  
  5.     T1.hellobody(userdata,  
  6.             function(data){  
  7.                 alert(data);  
  8.             }  
  9.         );  
  10.     T1.getUser(function(data){  
  11.             for(var prop in data){  
  12.                 alert("属性名:"+prop+",属性值:"+data[prop]);  
  13.             }  
  14.     });  
  15. }  
  16. </script></span>  


       效果图如下:


 

       相信根据代码,你已经理解的差不多了。我再解释一下吧:

 

       由于dwr只支持json的数据格式,因此在dwr中我们要读取javaBean中的属性,就必须将其转换成json的数据格式,这需要配置convert进行转换转换器中最常用的是bean(本实例用这个)和Object。


       bean 转换器可以把pojo 转换成JavaScript支持的Json数组(以键值对的形式存储类似Java的Map)。或者反向转换。只有在你自己同意的情况下,dwr才会去调用你的Java代码。

 

       本实例中,我们采用的是bean转换器来转换User对象,所以对DwrTest配置一个creator,User配置一个convert。另外在js代码中,传递参数也需要用json格式的对象。即本例中的userdata对象。

在使用dwr避免不了碰到javabean中有对象作为参数的,那么这样的方法怎么在js中调用呢?

       就这个问题,做了一个小例子,与大家分享一下:

 

[java] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <span style="font-size:18px;">package com.tgb.dwr;  
  2.   
  3. /** 
  4.  * dwr使用测试 
  5.  * @author Admin 
  6.  * 
  7.  */  
  8. public class DwrTest {  
  9.     public String hellobody(User user){  
  10.         return "Hello,"+user.getName()+",恭喜你今年"+user.getAge()+"岁";  
  11.     }  
  12.     public User getUser(){  
  13.         User user = new User();  
  14.         user.setName("Arron");  
  15.         user.setAge(10);  
  16.         return user;  
  17.     }  
  18. }  
  19.   
  20. public class User {  
  21.     private String name;  
  22.     private int age;  
  23.     //省略set和get方法  
  24. }</span>  

 

 

       dwr.xml的配置如下:

 

[html] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">  
  3. <dwr>  
  4.     <allow>  
  5.       <create javascript="T1" creator="new">  
  6.         <param name="class" value="com.tgb.dwr.DwrTest"/>  
  7.       </create>  
  8.       <convert match="com.tgb.dwr.User" converter="bean">  
  9.         <param name="include" value="name,age"></param>  
  10.       </convert>  
  11.     </allow>  
  12.   
  13. </dwr>  
  14. </span>  


       js代码如下:

 

 

[html] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. <span style="font-size:18px;"><script type="text/javascript">  
  2. function test1(){  
  3.     var userdata;  
  4.     userdata = {name:"Arron", age:"10"};  
  5.     T1.hellobody(userdata,  
  6.             function(data){  
  7.                 alert(data);  
  8.             }  
  9.         );  
  10.     T1.getUser(function(data){  
  11.             for(var prop in data){  
  12.                 alert("属性名:"+prop+",属性值:"+data[prop]);  
  13.             }  
  14.     });  
  15. }  
  16. </script></span>  


       效果图如下:


 

       相信根据代码,你已经理解的差不多了。我再解释一下吧:

 

       由于dwr只支持json的数据格式,因此在dwr中我们要读取javaBean中的属性,就必须将其转换成json的数据格式,这需要配置convert进行转换转换器中最常用的是bean(本实例用这个)和Object。


       bean 转换器可以把pojo 转换成JavaScript支持的Json数组(以键值对的形式存储类似Java的Map)。或者反向转换。只有在你自己同意的情况下,dwr才会去调用你的Java代码。

 

       本实例中,我们采用的是bean转换器来转换User对象,所以对DwrTest配置一个creator,User配置一个convert。另外在js代码中,传递参数也需要用json格式的对象。即本例中的userdata对象。

posted on 2016-07-26 10:01  Sharpest  阅读(649)  评论(0编辑  收藏  举报