使用DWR出现“例外被抛出且未被接住”错误的原因和解决办法

DWR提供了两个js文件:engine.js和util.js,通常来说我们都是动态来引用这两个js文件,在官方的例子中也是这样做的(其中dwr是mapping时的路径):

  1. < script type = " text/javascript " src = " /dwr/engine.js " ></ script >
  2. < script   type = " text/javascript " src = " /dwr/util.js " ></ script >

但是根据页面优化原则,我们如果将所有的js文件进行压缩整合在一起 的话将会极大的减少页面加载的时间。但是当我们将上面的两个js文件下载下来然后跟其他js文件整合压缩之后,访问页面的时候会出现一个“例外被抛出且未被接住”的脚本错误。

用百度搜索了一下基本只搜到一篇名为《dwr应用时请注意(初学者)》 的文章,文章中建议使用他在附件中所提供的dwr.jar包。但是作者所提供的dwr版本有些低,另外作者并没有在文章中说明造成问题的原因。

后来将异常转换为英文 Exception thrown and not caught 在google中搜索了一下,得知是因为没有在页面中动态引用engine.js,因为dwr在运行的时候需要动态控制这个文件。

但是这样的话就达不到压缩engine.js文件的目的了,我无意中在官方看到一篇专门讲解怎样缓存engine.js文件的文章 ,下面我就将作者建议的做法说明如下:

首 先使用动态加载engine.js文件,然后将该文件下载下来。打开下载下来的engine.js文件,然后将第226到242行之间的文字剪切下来,然 后将dwr.jar包中的org/directwebremoting/engine.js文件内容删除,然后粘贴到该文件中并替换dwr.jar包中原 来的engine.js文件,内容大致如下:

  1. dwr . engine . _origScriptSessionId = " ${scriptSessionId} " ;
  2. dwr . engine . _sessionCookieName = " ${sessionCookieName} " ;
  3. dwr . engine . _allowGetForSafariButMakeForgeryEasier = " ${allowGetForSafariButMakeForgeryEasier} " ;
  4. dwr . engine . _scriptTagProtection = " ${scriptTagProtection} " ;
  5. dwr . engine . _defaultPath = " ${defaultPath} " ;
  6. dwr . engine . _pollWithXhr = " ${pollWithXhr} " ;

这样就可以将下载下来的engin.js文件同其他文件进行压缩合并了,但是在页面中还必须动态引用engine.js:

  1. < script type = " text/javascript " src = " /dwr/engine.js " ></ script >

这样一来即压缩了engine.js文件中静态的部分,又使用了engine.js中的动态部分,并且最重要的是“例外被抛出且未被接住”异常也不会再出现了。

参考资料:
Caching engine.js

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值