`
鬼大来晚了
  • 浏览: 66059 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

DWR同一个页面中多次引用engine.js出现:Incomplete reply from server

    博客分类:
  • DWR
 
阅读更多
  之前写过两篇DWR原理的文章,对DWR的使用原理基本了解了。由于最近在做portlet的开发,遇上了这样一个问题。在同一个界面中可能会加入多个portlet,而其中每个portlet中都会用到DWR,所以当多个portlet同时加载在一个页面是,就会出现:Incomplete reply from server的错误。找了一些资料,发现如下资料:

http://directwebremoting.org/jira/browse/DWR-481?page=com.atlassian.jira.plugin.system.issuetabpanels%3Achangehistory-tabpanel

之前一直没有注意过DWR的版本问题,看到上面这篇文章,开回头看了一下自己用的DWR。果然是DWR3.0.这是差不多三年前,DWR发布的一个bug,既然3.0没有解决,那就得自己想些比的解决方案。

又经过一番的查询,找到了如下一种解决方案,按照做了:

http://www.liferay.com/zh/community/forums/-/message_boards/message/25813719

要点如下:
1、首先,需要一个require.js文件,
下载地址如下:http://requirejs.org

2、在所有使用DWR的.jsp页面中添加如下脚本:
<script data-main="/NameOf-portlet/js/main.js" src="/path/to/js/require.js"></script>

3、编写main.js脚本

//判断是否加载dwr
if (typeof dwr == 'undefined') {
require(["/NameOf-portlet/dwr/engine.js"], function() {
require(["/NameOf-portlet/dwr/util.js"], function() {
require(["/NameOf-portlet/dwr/interface/BrowseDWRGate.js"], function() {
//alert("Engine js incldued");
});
});
});
}else {
require(["/NameOf-portlet/dwr/interface/DWRGate.js"], function() {
//alert("Just gate incldued");
});
}
}


我按照以上的步骤执行了,对于单个页面加载单个portlet这种方式是可以的。但是,当同一页面加载多个使用DWR的portlet时,虽然不报错了,但是DWR功能却不能执行了。原因还不知道为什么,我也在进一步测试,希望有做这方面的一起讨论。

附上jquery-require-sample的是例子.

require.js的用法:

http://www.ruanyifeng.com/blog/2012/11/require_js.html







分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics