在使用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.
??
|----------------------------------------------------------------------------------------|
版權聲明 版權所有 @zhyiwww
引用請注明來源 http://www.tkk7.com/zhyiwww
|----------------------------------------------------------------------------------------|
posted on 2008-09-26 11:55
zhyiwww 閱讀(2464)
評論(1) 編輯 收藏 所屬分類:
ajax