今天花了一个下午学习了一下 关于 collection 的 converter 的使用,这是Dwr的一个默认的 converter
<convert converter="collection" match="java.util.Collection"/>
但是不知道怎么用,从 Java Object --> Javascript Object 问题不大,有现成的例子可供参考 :),
就是 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 的代码的参数 是一个 Collection ,则要稍微处理以下,先照上面 黑体字 的声明以下传入的Collection
的内部包含的类的 确切类型,以便 Java 代码 作出判断;
如果传入的参数是一个 List,则在 Javascript 中把这些对象放在 一个Array中就可以了,
如果传入的参数是一个Map,原来以为是 一个 二维的 Array就行了,但是试过之后发现不行,看了一下例子,原来要使用这种形式:
var depts={"dept1":new department("2", "200"),"dept2":new department("3", "300")};
这样传进去之后 Java 就会根据 这些 数据构建 一个Map,