Portlet 知道同一页面上的其他 Portlet

Portlet aware of other portlets on the same page

我的任务是开发一个 "action portlet",其中包含同一页面上所有其他 portlet 的操作(例如 h:commandLink)。现在,只有当相应的 portlet 实际出现在同一页面上时,这些操作才可用。

一个 portlet 是否可以 "know" 同一页面上的哪些其他 portlet 而不必先处理 ActionRequest?

你好。

我对您的问题的直觉反应是 portlet 应该足够自包含,不需要页面上的其他 portlet 即可运行。因此,在不知道为什么需要这样做的情况下,听起来这种设计选择有一些固有的缺陷。 Portlet A 永远不需要处理 Portlet B 的 ActionRequests。看起来你只是想扭曲、破坏和滥用 portlet 规范,但我承认我在用例允许的情况下违反了设计规则。

作为替代方案,我可能建议您的 portlet 允许其他 portlet 告诉您的 portlet 他们需要做什么,而不是您的 portlet 必须询问。您可以在客户端执行此操作,其中每个其他 portlet 在页面加载时运行一点 JavaScript 以通知您的 portlet 它需要做什么。

回到你的实际问题。我没有深入研究文档,但是 WebSphere Portal 提供的 API 可能有助于确定您需要什么。以下是 IBM 关于该主题的文档的 link。

http://www-01.ibm.com/support/knowledgecenter/SSHRKX_8.5.0/mp/dev/dgn_modelovw.dita

模型 SPI 是 portlet 如何访问有关门户页面结构、导航状态和许多其他相关内容的所有内容。我希望模型 SPI 能够告诉您在与当前 portlet 相同的页面上有哪些其他 portlet。获得页面上其他 portlet 的列表后,如何确定需要呈现的其他 link 将取决于您。