我知道您可以通过简单地使用JSR286 resourceURL标记并执行AJAX调用来创建可以刷新其内容而无需刷新整个门户页面的portlet。
我的问题是,是否可以在Portlet A中进行AJAX调用,并以某种方式定位并动态更新Portlet B?
当您通过actionURL或事件进行portlet间通信时,我们的想法是避免who portal页面刷新(重新呈现)。
答案 0 :(得分:1)
您可以使用jQuery trigger()和bind()方法在Portlet之间进行通信。使用这种方法,所有通信都将在客户端(浏览器)上进行,无需任何服务器交互。
监听事件的portlet B应该执行以下操作:
$(document).bind("myevent", function(event, param) {
// do your work here
alert("message recieved with data " + param);
});
触发事件的portlet应执行以下操作:
$(document).trigger("myevent", "mydata");
答案 1 :(得分:0)
如果Portlet B不需要执行服务器端逻辑,那么您可以在客户端上使用pub / sub并让Portlet B监听Portlet A将发布的特定事件。
所以流程是:
以这种方式使用pub / sub将portlet相互分离。如果Portlet A不存在,则Portlet B不会中断。如果Portlet B不存在,则Portlet A不会中断。
如果Portlet C出现并且也能够获取MyData,这个portlet也也开始发布“MyDataUpdated”事件,Portlet B将开始获取这些事件也是。它免费获得新的更新!