门户/ portlet编程 - portlet链接/页面流

时间:2009-04-24 10:12:55

标签: java portlet portal-system

我正在编写我的第一个基于portlet的应用程序(对于liferay,但解决方案应该是容器不可知的)我想知道人们如何解决提供链接到“引导”到不同portlet的用户(可能在不同的“页面”在门户网站)。

虽然您可以在portlet中轻松拥有不同的视图模式,但是如何链接到另一个portlet并且(也许)也可以传递参数?

我不是在讨论portlet之间的简单通信,而是我感兴趣的真实页面流。

实施例: 您的页面A带有一个显示新闻项列表的portlet。然后你有一个配置方式的页面B我想要显示一个新闻项目(例如它周围的不同portlet)

是否有一个通用解决方案链接到页面B并对news-Detail-Portlet说它应该显示项目XYZ?

快速而肮脏的解决方案是通过news-list-portlet的编辑模式配置目标链接。但这有几个缺点: - 复杂的portlet可能有多个目标URL,这导致门户管理员的大量配置工作 - 网址可能不遵循允许简单参数注入的方案

我有一个解决方案,但这需要大量的努力,并且可能需要更改目标portlet,如果您使用第三方portlet,这并不总是可行。

我的解决方案如下:(草稿!)

Portlet在中央服务中注册其portlet ID,当portlet想要链接到portlet时,它可以根据符号名称进行查找。这将减轻管理员的痛苦,因为可以“自动发现”portlet。该服务还可以提供基于源和目标portlet连接portlet的UI。

可以更改的portlet的URL生成可以通过对portlet的服务调用来解决,该portlet使用注入的参数生成URL作为整体并返回它。 对于无法更改的portlet,您必须附加参数并希望它可以正常工作。 : - /

有什么建议吗?有更简单的解决方案吗?现有的解决方案?

谢谢!

帕特里克

2 个答案:

答案 0 :(得分:1)

据我所知,Portlet规范并没有涵盖这一点。所以没有便携式解决方案。对于Liferay,您可以随时使用他们的自定义标记库,它正是针对这个问题。 Websphere Portal有类似的机制。

可以找到herehere

的内容

通常我会尽量避免这种情况并使用标准的IPC机制(公共渲染参数或事件)

答案 1 :(得分:0)

对于JSR 286规范,可以使用事件进行portlet间通信。对于较旧的JSR 168,没有一种认可的方法。如果您找到适合自己的方式,请使用它。

Manning免费赠送一本旧书(需要注册)。你可以在那里找到一些想法。