在使用dwr避免不了碰到javabean中有对象作为参数的,那么这样的方法怎么在js中调用呢?
就这个问题,做了一个小例子,与大家分享一下:
- <span style="font-size:18px;">package com.tgb.dwr;
-
-
-
-
-
-
- public class DwrTest {
- public String hellobody(User user){
- return "Hello,"+user.getName()+",恭喜你今年"+user.getAge()+"岁";
- }
- public User getUser(){
- User user = new User();
- user.setName("Arron");
- user.setAge(10);
- return user;
- }
- }
-
- public class User {
- private String name;
- private int age;
-
- }</span>
dwr.xml的配置如下:
- <span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">
- <dwr>
- <allow>
- <create javascript="T1" creator="new">
- <param name="class" value="com.tgb.dwr.DwrTest"/>
- </create>
- <convert match="com.tgb.dwr.User" converter="bean">
- <param name="include" value="name,age"></param>
- </convert>
- </allow>
-
- </dwr>
- </span>
js代码如下:
- <span style="font-size:18px;"><script type="text/javascript">
- function test1(){
- var userdata;
- userdata = {name:"Arron", age:"10"};
- T1.hellobody(userdata,
- function(data){
- alert(data);
- }
- );
- T1.getUser(function(data){
- for(var prop in data){
- alert("属性名:"+prop+",属性值:"+data[prop]);
- }
- });
- }
- </script></span>
效果图如下:
![](//img-blog.csdn.net/20140505202735921?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3hpYW44MDIz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](//img-blog.csdn.net/20140505204405890?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3hpYW44MDIz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](//img-blog.csdn.net/20140505204530421?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3hpYW44MDIz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
相信根据代码,你已经理解的差不多了。我再解释一下吧:
由于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中调用呢?
就这个问题,做了一个小例子,与大家分享一下:
- <span style="font-size:18px;">package com.tgb.dwr;
-
-
-
-
-
-
- public class DwrTest {
- public String hellobody(User user){
- return "Hello,"+user.getName()+",恭喜你今年"+user.getAge()+"岁";
- }
- public User getUser(){
- User user = new User();
- user.setName("Arron");
- user.setAge(10);
- return user;
- }
- }
-
- public class User {
- private String name;
- private int age;
-
- }</span>
dwr.xml的配置如下:
- <span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">
- <dwr>
- <allow>
- <create javascript="T1" creator="new">
- <param name="class" value="com.tgb.dwr.DwrTest"/>
- </create>
- <convert match="com.tgb.dwr.User" converter="bean">
- <param name="include" value="name,age"></param>
- </convert>
- </allow>
-
- </dwr>
- </span>
js代码如下:
- <span style="font-size:18px;"><script type="text/javascript">
- function test1(){
- var userdata;
- userdata = {name:"Arron", age:"10"};
- T1.hellobody(userdata,
- function(data){
- alert(data);
- }
- );
- T1.getUser(function(data){
- for(var prop in data){
- alert("属性名:"+prop+",属性值:"+data[prop]);
- }
- });
- }
- </script></span>
效果图如下:
![](//img-blog.csdn.net/20140505202735921?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3hpYW44MDIz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](//img-blog.csdn.net/20140505204405890?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3hpYW44MDIz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](//img-blog.csdn.net/20140505204530421?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb3hpYW44MDIz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
相信根据代码,你已经理解的差不多了。我再解释一下吧:
由于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对象。