又是dwr,这回让我郁闷的是DWRUtil.useLoadingMessage

本文探讨了DWR在与WebLogic集成过程中遇到的问题,特别是关于DWRUtil.useLoadingMessage方法导致的消息显示异常现象。文章分析了问题的原因,并提出了可能的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继上次weblogic和dwr集成的时候出现方法不能重载的问题之后,又出现了DWR又出事了,这次是DWRUtil.useLoadingMessage。红色的框框出现的提示一闪而过,以至于我不得不在n个地方做了修改,否则我只要改一个页面+新增一个javabean就搞定了。

但是莫名其妙的是,如果我新增了一个alert()函数,则没有问题,提示不会一闪而过。

 

从网上搜了一下,看来遇到的就是第三种情况

 

This method may be deprecated at some point in the future because its implementation has a number of limitations:

  • The implementation is rather arbitary. Why red, why top right, etc. The only real answer is, to copy GMail.
  • The action is supposed to stop the user interacting with the page until the remote call is complete, but this only works on Firefox due to limitations in IE (although this limitation is likely to be removed in version 3.0)
  • This implementation will fail when multiple remote requests are outstanding - the message will be removed too quickly.
  •  

    http://directwebremoting.org/dwr/browser/util/useLoadingMessage.html

     

    思考一下,大概是由于dwr在运行的时候一个request是和一个dwr线程绑定的。而dwr的useLoadingMessage方法和我们写的javabean位于同一个线程。当javabean还没有执行完毕返回时,useLoadingMessage被阻塞在那里,知道javabean调用完成。

    我写的页面中,在一个js的function中执行了2个dwr的javabean,其中一个执行速度很快,而另一个很慢,于是当执行速度快的javabean结束后,useLoadingMessage方法就返回了(dwr本身是异步的ajax,实际上两个javabean同时在后台跑)。

     

    如果我使用了alert(),则可能造成了当第一个javabean返回后,useLoadingMessage方法被继续堵塞在那里,直到第二个执行慢的javabean执行返回。

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值