我正在编写我的第一个基于portlet的应用程序(用于救生筏,但解决方案应该是容器不可知论的),我想知道人们如何解决如何提供指向“引导”不同portlet的用户的链接(可能在门户中不同的“页面”上)。
虽然您可以很容易地在portlet中拥有不同的视图模式,但是如何链接到另一个portlet,并且(可能)还传递参数?
--我说的不是portlet之间的简单通信,而是真正感兴趣的页面流。
示例:您有一个带有portlet的页面A,它显示一个新闻项目列表。然后是页面B,按照配置的方式,我希望显示一个新闻条目(例如,围绕它的不同portlet)。
有没有一个通用的解决方案链接到页面B,并告诉新闻细节-Portlet,它应该显示项目XYZ?
快速而肮脏的解决方案是通过新闻列表-portlet的编辑模式配置目标链接。但是这有几个缺点:-复杂的portlets可能有几个目标URLs,这导致了门户管理的大量配置工作-- urls可能不遵循允许简单参数注入的方案。
我想到了一个解决方案,但这将需要大量的努力,也许需要对目标portlet进行更改,如果您使用第三方portlet,这并不总是可能的。
我的解决方案应该是这样的:(草案!)
portlet使用其portlet ID在中心服务注册,当portlet希望链接到portlet时,它可以基于符号名称进行查找。这将减轻管理员的痛苦,因为“自动发现”portlet是可能的。该服务还可以提供一个UI来连接基于源和目标portlet的portlet。
可以更改的portlet的URL生成可以通过对portlet的服务调用来解决,portlet使用注入的参数生成URL作为一个整体并返回它。对于无法更改的portlets,您必须附加参数并希望它能够工作。*-/
有什么建议吗?有没有更简单的解决方案?现有的解决方案?
谢谢!
帕特里克
发布于 2009-04-24 12:50:26
据我所知,Portlet规范没有涵盖这一点。所以没有便携的解决方案。对于Liferay,您可以始终使用他们的自定义标记库,这正是针对这个问题的。Websphere Portal也有类似的机制。
有些东西可以找到这里和这里
通常,我会尽量避免这种情况,并使用标准IPC机制(公共呈现参数或事件)。
发布于 2009-04-24 10:25:46
对于JSR 286规范,可以使用事件来进行portlet间的通信。对于较老的JSR 168来说,没有一种认可的方法可以这样做。如果你找到了一种适合你的方法,那就用它。
有一本从曼宁免费赠送的旧书(需要注册)。你可以在那里找到一些想法。
https://stackoverflow.com/questions/785277
复制相似问题