DWR配置的深层小析

在dwr.xml配置文件中,allow的子标签convert标签用于配置DWR中参数传递中用到的非基本的对象类型。基本类型有数值型,字符串,简单数组等。如果配有javascript属性,则该对象类型可以显式地在所有用到DWR的JS代码里创建出来,如var sb = new StringBuffer();这样的代价就是所有用到DWR的页面都需要下载该对象的JAVASCRIPT构造函数(由DWR创建),增加了DWR生成的JS文件尺寸。而DWR生成的JS是动态生成的,无法被CACHE,所以性能影响颇大。如果不加javascript属性,可以用var sb = new Object()来实现该数据对象的创建,然后隐式地对属性进行赋值。
allow的子标签create标签用于配置公开的业务对象(或其中指定的函数接口),creator是spring表示用Spring的bean来提供业务对象,beanName参数(create下的param标签)指定具体bean的名字;creator是new时,表示用JAVA类默认构造函数来生成对象来实现DWR对方法的JAVASCRIPT转换,name属性通常为class,而对应值则是类的全路径。create下任意多个的include子标签用method属性指定公布成javascript函数的接口名字,如果没指定include,则默认所有public方法都会被公布成javascript函数,所以这会增加DWR创建的JS文件尺寸(基本每个函数多3-4行javascript代码)。
signatures标签用于声明公开的业务对象方法的调用细节,对DWR的转换目前没看出有什么影响。
<dwr> 
  <allow> 
<convert converter="bean" match="java.lang.StringBuffer" javascript=”StringBuffer”/> 
<create creator="new" javascript="ClassHelper" scope="request"> 
           <param name="class" value="com.companya.projectb.ClassHelper"/> 
</create> 
<create creator="spring" javascript="HandlerImpl" > 
           <param name="beanName" value="handlerImpl"></param> 
           <include method="addStringBuffer"/>             
</create> 
</allow>
  <signatures> 
  <![CDATA[ 
  import java.util.List; 
  import java.lang.StringBuffer;
  HandlerImpl.addStringBuffer(List<StringBuffer>, String[][], boolean ); 
  ]]> 
  </signatures> 
</dwr>
附DWR生成的JS样例:
projectb/dwr/interface/HandlerImpl.js 
//如果StringBuffer有javascript属性声明,则下列构造函数存在。
if (typeof StringBuffer != "function") { 
  var StringBuffer = function() { 
     this.action = null; 
    this.id = null; 
    this.createTime = null; 
    this.lastModifiedTime = null; 
   } 

// Provide a default path to dwr.engine 
if (dwr == null) var dwr = {}; 
if (dwr.engine == null) dwr.engine = {}; 
if (DWREngine == null) var DWREngine = dwr.engine; 
if (HandlerImpl == null) var HandlerImpl = {}; 
HandlerImpl._path = '/projectb/dwr'; 
//For every issued interface. 每个公布的接口方法调用。
pcaEmailHandler.addStringBuffer = function(p0, p1, p2, callback) { 
  dwr.engine._execute(pcaEmailHandler._path, 'pcaEmailHandler', 'addEmail', p0, p1, p2, p3, callback); 
}
 

本文转自 dannyy1026 51CTO博客,原文链接:
http://blog.51cto.com/dannyyuan/338229
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值