AJAX是否可以进行内部portlet通信?

Mar*_*gan 6 javascript ajax portal portlet

我知道您可以创建可以刷新其内容的portlet,而无需通过简单地使用JSR286 resourceURL标记和执行AJAX调用来刷新整个门户页面.

我的问题是,是否可以在Portlet A中进行AJAX调用,并以某种方式定位并动态更新Portlet B?

当您通过actionURL或事件进行portlet间通信时,我们的想法是避免谁门户页面刷新(重新呈现).

Pau*_*ime 0

如果 Portlet B 不需要执行服务器端逻辑,那么您可以简单地在客户端上使用 pub/sub 并让 Portlet B 侦听 Portlet A 将发布的特定事件。

所以流程是:

  1. 初始 HTML 页面将发送到客户端,并且 Portlet A 和 Portlet B 均处于打开状态。
  2. 发布/订阅系统在客户端初始化。也许使用像amplifyjs这样的东西。
  3. 客户端上的 Portlet B 注册名为“MyDataUpdated”的主题(或者您想要为该主题指定的任何有意义的名称)。
  4. 客户端通过 XHR 触发对 Portlet A 的serveResource 调用。
  5. 服务器上的 Portlet A 执行serveResource 调用的逻辑。
  6. 服务器上的 Portlet A 将其响应发送回客户端。
  7. 客户端上的 Portlet A 使用serveResource 响应并使用主题“MyDataUpdated”发布结果。
  8. 客户端上的 Portlet B 收到“MyDataUpdated”事件的通知。
  9. 客户端上的Portlet B 可以自行刷新。

以这种方式使用 pub/sub 可将 portlet 彼此解耦。如果Portlet A 不存在,则Portlet B 不会中断。如果Portlet B 不存在,则Portlet A 不会中断。

如果 Portlet C 出现并且能够获取 MyData,则该 Portlet可以开始发布“MyDataUpdated”事件,并且 Portlet B 也将开始获取这些事件。它免费获得新的更新!