在使用DWR的时候,解决值得传递问题,可以通过回调函输实现对客户端的javascript的函数的调用。
同时可以通过DWR实现了通过javascript对java的调用。所以DWR解决了在Java和javascript之间的互相调用问题。
但是在实际的调用过程中,有些问题还是需要解决的,如:
如何在回调中传递串对象?
如何回调中传递Java对象?
如果,能实现传递串对象,其实,已经可以实现了在javascript和java之间的数据传递,也可以通过在java上组合成json串返回,就可以实现,和对象的轻松转换。
如果能实现传递对象,那不就省去了很多的问题,但是,这个问题,我也没有搞定。
不过象下面的例子,已经可以实现返回一个new Date()的Object对象了。不过,我看了一下,应该返回的是一个Date的串对象。
如下代码,是在Dwr中的调用
javascript:
ChatManager.regist(username,{
callback:function(obj){
alert("call back");
alert("obj : " + obj);
var map = getMap("theMap");
alert(map.x);
}});
JAVA:
public Object regist(String username,HttpServletRequest request){
System.out.println("regist user "+ username);
updateUsersList(username,true,request);
return new User("aaa","dsfdssdfdsf");
}
只有在此 regist方法有返回值得情况下,回调函数才能取到传入的值。
传递的如果是串类的对象,没有问题,如果我传递的是一个对象,就不能取到。
如
public Object regist(String username,HttpServletRequest request){
System.out.println("regist user "+ username);
updateUsersList(username,true,request);
return new A("myname");
}
注意:A是一个inner class,是在ChatManager里面定义的内部类。
class A{
private String uname;
public A(String uname){
this.uname = uname;
}
public String getUname(){
return this.uname;
}
};
这种情况下,回调函输取得的就是null.
来源于:http://www.blogjava.net/zhyiwww/archive/2008/09/26/231268.html