当前位置: 代码迷 >> Web前端 >> DWR中使用回调函数的传值有关问题
  详细解决方案

DWR中使用回调函数的传值有关问题

热度:176   发布时间:2012-11-23 00:03:43.0
DWR中使用回调函数的传值问题

在使用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

  相关解决方案