0

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

Portlet 是否可以“知道”哪些其他 Portlet 在同一页面上,而不必先处理 ActionRequest?

问候。

4

1 回答 1

0

我对您的问题的直觉反应是,一个 portlet 应该是自包含的,以至于它不需要页面上的其他 portlet 来运行。因此,如果不知道为什么需要这样做,听起来这种设计选择有一些固有的缺陷。Portlet A 永远不需要处理 Portlet B 的 ActionRequest。看起来您只是在尝试弯曲、破坏和滥用 portlet 规范,但我承认当用例需要时我已经违反了设计规则。

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

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

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

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

于 2015-02-04T16:37:50.937 回答