使用dwr

个人备忘录性质,不同框架可能不同,公司用了Tapestry框架,集成dwr所以不适合全部。 

1、在页面上引用js
<script jwcid="@xylib:ImpScript" script="dwr.js" />
<script jwcid="@Any" type="text/javascript" src="ognl:request.contextPath+'/dwr/interface/xxxxFacade.js'" />
注意xxxxFacade.js名字是自己起的dwr9会根据这个名字生成js。
2、配置dwr-px.xml
……

<dwr>
 <allow>
  <convert match="java.lang.StringBuffer" converter="bean"></convert>
  
  <create javascript=" xxxxFacade " creator="spring">
     <param name="beanName" value="px. xxxxFacade"/>
       <include method="getForNewRowXJX"/>
  </create>
 
 </allow>
</dwr>

……

配置web.xml
配置dwr对应的配置文件

……
<init-param>
  <param-name>config-dwr</param-name>   
  <param-value>WEB-INF/classes/dwr/dwr_px.xml</param-value>
</init-param>

……
@@注意红色字体xxxxFacade 对应前台页面上那个js名字,
@@px. xxxxFacade对应spring配置文件里的一个bean,getForNewRowXJX对应xxxxFacadeImpl里的一个方法
@@在xxxxFacade.java接口里写方法getForNewRowXJX,在其实现类xxxxFacadeImpl.java里实现方法getForNewRowXJX

3、页面上引用dwr的方法
xxxxFacade . getForNewRowXJX (参数1,参数2,…,function(flag){
       用js回填值
});
有时候这里必须用匿名函数,不能写到外面,不知道为什么按说用匿名或者写成单独的函数调用都应该是一样的。
function为回调函数flag为xxxxFacade.getForNewRowXJX()的返回值。
前面的参数是方法getForNewRowXJX(参数1,参数2,…)的参数。
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
另外有一个很重要的问题就是:dwr是异步验证是他的优势,但是也是他容易出错的地方。
如果你在回调函数中进行处理的话,那么主函数和回调函数是一起进行的,
那么就有可能,你在会点函数进行的赋值等处理未进行过完,那么主函数就已经开始使用这个值了,
结果肯定是不能得到预期效果的,因为回调函数还未把返回的结果传递给变量。
所以我们要使用手动控制dwr的同步异步:
查看dwr源码我们会发现,有这样一个方法,可以设置dwr的同步异步。
DWREngine.setAsync(false);//false为同步执行,true为异步执行。
在回调函数执行前将其设置为同步的,然后在回调函数执行完后将其定义为异步的。
DWREngine.setAsync(false);
xxxxFacade.. getForNewRowXJX (参数1,惨数2,…,function(flag)

……

});
DWREngine.setAsync(true);
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值