2

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

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

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

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

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

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

我想到了一个解决方案,但这需要付出巨大的努力,并且可能需要对目标 portlet 进行更改,如果您使用 3rd 方 portlet,这并不总是可行的。

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

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

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

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

谢谢!

帕特里克

4

2 回答 2

1

据我所知,Portlet Specification 没有涵盖这一点。所以没有便携的解决方案。对于 Liferay,您始终可以使用他们针对此问题的自定义标签库。Websphere Portal 也有类似的机制。

可以在这里这里找到一些东西

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

于 2009-04-24T12:50:26.170 回答
0

对于 JSR 286 规范,可以使用事件进行 portlet 间的通信。对于较旧的 JSR 168,没有经过认可的方法可以这样做。如果您找到适合您的方法,请使用它。

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

于 2009-04-24T10:25:46.953 回答