0

在 JSR286 中,我们可以通过以下方式从一个 portlet 转到另一个 portlet:

1) 简单导航 2)​​ 使用 IPC(Inter Portlet Communication)

我有两个portlet A 和B。两者都有相应的Portlet.java 文件(处理portlet 的生命周期)。当我们使用 IPC 从 A 到 B 时,会调用 B 的 Portlet.java,但是如果我们使用导航从 A 到 B,那会发生什么?在导航中是否会调用 B 的 Portlet.java?

(这里我们假设 portlet A 和 B 都在同一个 portlet 容器中。)

4

1 回答 1

1

好吧,当您通过在门户上打开一个页面来访问一个 portlet,并且从包含 portlet A 的页面转到包含 portlet B 的页面时,它只会通过 portlet 的呈现阶段,例如:

  1. 用户转到页面 A
  2. 门户容器调用portlet A 的RENDER阶段
  3. 用户转到页面 B
  4. Portal 容器调用Portlet B 的RENDER阶段

但是,当使用接线或 IPC 时,您将执行一些额外的步骤。首先,设置事件(在 portlet A 中)只能在操作阶段完成,因此您必须先向 portlet A 发送操作请求。然后它将发送事件,事件代理(门户容器的一部分)将对此做出反应并将您发送到正确的页面,在该页面中它将进入事件阶段(processEvent()),然后是渲染阶段。

所以它看起来像这样:

  1. 用户转到页面 A
  2. 门户容器调用portlet A 的RENDER阶段
  3. 用户触发一个动作(点击按钮/链接)
  4. 门户容器调用portlet A 的ACTION阶段
  5. 不是通常进入渲染阶段,而是设置一个事件
  6. 门户容器调用portlet B 的EVENT阶段
  7. Portal 容器调用Portlet B 的RENDER阶段

因此,要使 portlet 间通信正常工作,还需要执行其他步骤。首先,您必须在另一个 portlet 的操作阶段触发一个事件,其次,它将首先进入目标 portlet 的事件阶段,然后再进入呈现阶段。

于 2015-07-24T11:04:32.217 回答