最近因为项目的原因,在学习DWR技术,这是一个有趣的AJAX框架技术,下面以例子来实现dwr的一个简单的例子,如下:
在上面的例子中,需要注意的是:
配置文件的allow部分定义哪些类可以建立和转换,每个被准许的类都可以有一个'create'或者'convert'配置行.下面列出的类的转换在默认情况下不需要进一步的设置.
1、所有基本类型,boolean,int,double等等
2、基本类型的对象形式实现的类,Boolean,Integer等等
3、java.lang.String
4、java.util.date 和三个SQL形式的派生类
5、以上所有类型的数组形式
6、以上所有类型的集合,List,Set,Map(有些局限性)
默认的时候DWR将java void值转换成javascript的null值就是这样设置<convert converter="null" match="void"/>
. 有时java.lang.Void也需要进行这样的转换,所以设置也是相似的<convert converter="null" match="java.lang.Void"/>.从java中传递null值到javascript是没有任何危险性的,所以DWR将这个作为默认的converter,所以你自己不用再把这个converter添加到配置文件的<allow>部分中去.
基本类型的converter转换int,boolean,double等.当然还包括对应的对象形式Integerv,Boolean等等.DWR中在allow预定义了16个配置项目分别用于所有基本类型的转换.就象这样<convert converter="primitive" match="java.lang.Long"/><convert converter="primitive" match="long"/>.
String类型和Date同样预先定义了Converter,这些converter都没有办法进行改变的,所有的String,Date和数值类型都统一采用默认的converter.
-------如果你在参数中传入JAVASCRIPT中的是一个对象类型,则需要转换成javascript支持的Bean类型,如:
<!-- vo -->
<convert match="com.teedry.vo.AdminUserVo" converter="bean"/>
WR已经默认定义和初始化了常用的Converter,他们分别如下: