一种不能采用默认方式定义的converter就是Bean Converter,
这个是将POJO对象转换成javascript相关的数组,反向也一样.
基于安全因素的考虑这种类型的converter不能采用默认的方式实现.
假设有个bean并且通过<create ...>语句设置成远程可用,有种类型的参数他本身是一个带有setter的java bean,但setter会产生严重的隐患.攻击者可能促使这隐患的发生.通过下面的语句就可以设置但个类的bean converter
<convert converter="bean" match="your.full.package.BeanName"/>
要想允许转换指定包或子包下所有类的转换可以按照下面的设置
<convert converter="bean" match="your.full.package.*"/>
很明显,可以采用下面的方式来转换所有的java bean
<convert converter="bean" match="*"/>
如页面js调用:
var caseObj = new Object();
caseObj.caseStatusId=2;
caseObj.caseOkday=time;
.....
caseObj.repVilActor= repVilActor;
caseObj.repPerson = repPerson;
caseObj.recTownActor=recTownActor;
caseObj.repTownActor=repTownActor;
caseObj.daiban='${caseForm.caseBean.daiban}'
caseObj.caseGid = '${caseForm.caseBean.caseId}';
caseObj.recTownDep=recTownDep;
caseObj.repAreaActor = repAreaActor;
caseService.updateCase(caseObj);
我们要用到的Java caseService 类转化成一个Javascript对象供我们在页面中使用,这里传递了一个数组
通过配置转换成我们的vo对象;
<create creator="spring" javascript="caseService">
<param name="beanName" value="caseService" />
</create>
<convert converter="bean" match="com.ving.xzfw.vo.Case" />
DWR共有三种Creator,最简单的”new”是调用bean的默认构造函数创建实例.”scripted”允许采用其他脚本语言创建实例.如BeanShell.在远程bean的默认构造函数不能进行进一步配置的情况下这种类型的creator比较有用.”Spring”类型允许你通过spring创建实例.
下面是关于creator的参考资料和配置参数说明.
Creator Parameter User
new class 类的全名称(包括包路径)
scripted language BSF框架支持的脚本语言名称(BSF为apache项目)
scripted script 返回远程对象的脚本,脚本可以指定一些属性,多数情况下一般只设置param节点配置.属性很少设置.
spring Location* 任何以location开头的参数,每个参数都是指定一个spring的配置文件,在参数没有设置的情况下DWR会去读取spring的全局的配置文件.
spring beanName 从配置文件中读取的bean的名称
“scope参数允许你配置creator的生命周期,共有以下几个选项:application,session,request,page.这些参数对于用过jsp或servlet的开发人员并不陌生.
new 如:
<!-- 配置一个creator的创建和远程方法调用设置 :
这里面其实就是我们要用到的Java类,名字叫Demo。这个文件的作用就是可以将我们要用到的Java类转化成一个Javascript对象供我们在页面中使用。
-->
<allow>
<create creator="new" javascript="Demo">
<param name="class" value="wujincheng.Demo" />
</create>
</allow>
spring 如:
<create creator="spring" javascript="caseService">
<param name="beanName" value="caseService" />
</create>
在applicationContext.xml中的注释
<bean id="caseService"
class="com.ving.xzfw.service.impl.CaseServiceImpl">
<property name="dao" ref="caseDao"></property>
<property name="middleExchangeDao" ref="middleExchangeDao" />
</bean>