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出现“例外被抛出且未被接住”错误的原因和解决办法相关推荐

  1. SAS中修改一个表为编辑模式的时候不成功并给出警告的原因及解决办法

    今天看朱世武老师的<SAS编程技术教程>一书的时候,遇到一个问题,就是在SAS中打开一张表之后,右击Edit Mode,弹出了下面的警告框: 并且表格不能切换到编辑模式.经过在谷歌中搜索一 ...

  2. IntelliJ IDEA 中 Ctrl+Alt+T 快捷键失效、无法弹出surround with、与qq热键冲突-解决办法

    本文转载 原文地址: idea Ctrl+Alt+T 快捷键失效.无法弹出surround with.与qq热键冲突-解决办法

  3. 总是弹出visual studio 实时调试器 三种解决办法

    总是弹出visual studio 实时调试器 三种解决办法 最近服务器老是弹出visual studio 实时调试器很是郁闷呀.关还关不掉.怎么解决呢 ,现像如下图所示: 下面我们一起来分析一下这种 ...

  4. php curl 400 bad request怎么解决,关于json:file_get_contents抛出400 Bad Request错误PHP

    我只是使用file_get_contents()来获取来自这样的用户的最新推文: $tweet = json_decode(file_get_contents('http://api.twitter. ...

  5. php如何捕捉异常并抛出去,php抛出异常及捕捉特定类型异常解决办法

    php抛出异常及捕捉特定类型异常解决思路是什么?异常捕获在现在不少的ide工具中都能够用快捷键很方便的添加上,防止用户看到自己看不懂的报错甚至莫名其妙崩溃,导致用户体验不好.即使是显示一个友好一些的崩 ...

  6. [乐意黎原创]PHP启用session后抛 session_start(): open(/var/lib/php/session/sess_... 的解决办法

    如题,PHP启用SESSION后抛 Warning: session_start(): open(/var/lib/php/session_user/sess_d5gn9q7q9qii26ajk2c8 ...

  7. 服务器光盘修复读不出盘,光驱不读盘的原因与解决方法

    光驱不读盘的原因与解决方法 当电脑光驱使用久了读盘能力差了就会出现有的光盘能读,有的光盘不能读,或是有的光盘读到一半就出现卡死的现象,这一般都是由于光驱个别部件老化或光头过于污浊而导致光驱不能读盘.解 ...

  8. jq输出html 单引号引号转义符,javascript - 由于JSON中的单引号转义,jQuery.parseJSON抛出“无效的JSON”错误...

    根据JSON网站上的状态机图,只允许转义双引号字符,而不是单引号. 单引号字符不需要转义: 更新 - 有兴趣的人的更多信息: Douglas Crockford没有具体说明为什么JSON规范不允许字符 ...

  9. 双击SDK Manager.exe和AVD Manager.exe时,弹出提示:failed to execute tools\android.bat解决办法

    在Android的虚拟机上出现"no target selected",去android-sdk-windows里面双击SDK Manager.exe和AVD Manager.ex ...

  10. 关于eclipse控制台出不来,无法打印日志信息解决办法

    一.解决控制台出不来的三种方法,前两种是常规方法一.选择Window(窗口) --->show view(显示视图) --->Other(另外) 搜索Console(控制台)然后选中--- ...

最新文章

  1. java json 去重_js操作两个json数组合并、去重,以及删除某一项元素
  2. 深入redis内部--初始化服务器
  3. 2022年美国大学生数学建模竞赛常见问题汇总
  4. hive mysql 远程_Hive配置 远程连接MySQL
  5. 浅谈个性化推荐系统中的非采样学习
  6. 机器学习理论《统计学习方法》学习笔记:第四章 朴素贝叶斯法
  7. CLR运行时细节 - 继承多态的实现
  8. sql语句,怎么取查询结果的位置
  9. Golang 会淘汰 Python 吗?
  10. 广州计算机应用能力考试,2017年广州职称计算机考试报名时间和科目
  11. Python 之 异常
  12. vue中使用flexible.js并配合px2rem-loader实现移动端布局
  13. 如何自动搜出更好、更小、更快的NLP模型?
  14. js限制input输入
  15. 这次是16.7亿元!新能源汽车骗补何时休?
  16. JMETER安装与配置教程
  17. SWUST OJ 492: The Dutch flag problem
  18. 安卓手机传感器采集数据并保存数据
  19. 使用微PE安装U盘windows系统
  20. BAT替换文件中指定字符串

热门文章

  1. vb.net 实现编辑某列并回车后不换行,查询数据进行相关处理
  2. 单片机c语言轻松入门 pdf,单片机系统C语言轻松入门.pdf
  3. 软件测试项目案例.pdf,【精选】最经典软件测试案例.pdf
  4. 旅游网之后台管理系统
  5. 11计算机专业vb试题答案,西华师范大学计算机VB试题及答案11
  6. 腾讯地图获取地址的经度和纬度
  7. 教你100%成功安装Mathcad15
  8. STM32开发 | 移远4G-Cat.1模组EC200N-CN开发
  9. 微型计算机系统软件包括哪些,计算机的软件系统包括哪些内容
  10. smart原则_用SMART原则,定位好副业目标