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

使用DWR出现“例外被抛出且未被接住”错误的原因和解决办法DWR提供了两个js文件:engine.js和util.js,通常来说我们都是动态来引用这两个js文件,在官方的例子中也是这样做的(其中dwr是mapping时的路径):<scripttype="text/javascript"src="/dwr/engine.js"></script><script type=…

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

今天的文章使用DWR出现“例外被抛出且未被接住”错误的原因和解决办法分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/23981.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注