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

时间:2015-02-03 10:04:10

标签: jsf-2 portlet websphere-portal jsr286

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

portlet是否可以"知道"哪个其他portlet在同一页面上而不必先处理ActionRequest?

问候。

1 个答案:

答案 0 :(得分:0)

我对你的问题的直觉反应是,一个portlet应该是自包含的,它不需要页面上的其他portlet才能运行。因此,在没有任何其他知识为什么需要这样做的情况下,听起来这个设计选择有一些固有的缺陷。 Portlet A永远不需要为Portlet B处理ActionRequests。看起来您只是试图弯曲,破坏和滥用portlet规范,但我承认在用例时我已经破坏了设计规则保证它。

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

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

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

Model SPI是portlet如何访问有关门户网站页面结构,导航状态和许多其他相关内容的所有内容。我希望Model SPI能够告诉您与当前portlet在同一页面上的其他portlet。一旦获得页面上的其他portlet列表,您就可以决定如何确定需要呈现的其他链接。