DWR的使用經(jīng)驗:
1.. 需要jdom.jar和bsf.jar,否則無法跟spring整合.
2.. dwr生成的javascript函數(shù)會自動加一個回調(diào)函數(shù)的參數(shù),如原來的函數(shù)是checkExist(String name),那么生成的javascript函數(shù)是checkExist(callbackFunc,String name).
3.. 注意回調(diào)函數(shù)只能有一個參數(shù),就是服務器的返回值,如function(messFromServer),這里messFromServer是該操作在服務器上的返回值.
4.. util.js里面有很多有用的方法,最好熟悉一下.
5.. convert并不是必須的,只有你的函數(shù)需要傳遞非基本數(shù)據(jù)類型的數(shù)據(jù)時需要此項.
我需要增強的,dom操作,javascript
DWR collection converter 使用摘要
<convert converter="collection" match="java.util.Collection"/>但是不知道怎么用,從 Java Object --> Javascript Object 問題不大,有現(xiàn)成的例子可供參考 :),就是 Java function 返回一個Collection,看了一下返回值在 javascript 中是的形式是一個object Array然后在 javascript 取出每一個 Object的 property (eg. object.id , objecct.name....)
下面是一個應用實例---------------------DWR.XML------------------------------
<dwr>
<allow>
<convert converter="bean" match="dwr.sample.Apartment"/>
<create creator="new" javascript="ApartmentDAO" class="dwr.sample.ApartmentDAO">
<include method="findApartments"/>
<include method="countApartments"/>
<include method="addApartment"/>
<include method="addApartments"/>
<include method="addApartments2"/>
</create>
<create creator="spring" javascript="ApartmentDAO" >
</create>
</allow>
<signatures>
<![CDATA[import java.util.*;
import dwr.sample.*;
ApartmentDAO.addApartments(List<Apartment>);
ApartmentDAO.addApartments2(Map<String,Apartment>);
]]>
</signatures>
</dwr>
如果傳如 java 的代碼的參數(shù) 是一個 Collection ,則要稍微處理以下,先照上面 黑體字 的聲明以下傳入的Collection的內(nèi)部包含的類的 確切類型,以便 Java 代碼 作出判斷;如果傳入的參數(shù)是一個 List,則在 Javascript 中把這些對象放在 一個Array中就可以了,如果傳入的參數(shù)是一個Map,原來以為是一個 二維的 Array就行了,但是試過之后發(fā)現(xiàn)不行,看了一下例子,原來要使用這種形式: var depts={ "dept1":new department("2", "200"),"dept2":new department("3", "300") };這樣傳進去之后 Java 就會根據(jù) 這些 數(shù)據(jù)構建 一個Map,