1

希望你一切都好。

这是我的场景。我有多个 (20+) Liferay portlet,它们使用网格/表格来显示数据。

每个 portlet 根据不同的标准检索数据。

但是,网格与一些常用功能相同,例如过滤、分页、数据导出等。

目前,每次我们必须对网格样式进行更改时,我都必须对 20 多个 portlet 中的每一个进行更改。这确实效率低下,并导致大量时间浪费。

因此,我想知道是否可以创建一个通用的“portlet”或“ composite ”,以便它可以显示来自多个 portlet 的数据?详细地说,通用 portlet/composite 将包含网格、过滤、分页、导出等特性。

这个通用的 portlet/composite 将从各种 portlet 接收数据并简单地显示它。

因此,如果我需要对网格样式进行任何更改,只需在一个地方进行更改就足够了。

有没有人经历过这样的场景?

你有什么解决办法吗?

提前感谢您的帮助。

4

2 回答 2

1

如果您只需要按不同标准检索数据,具有导出数据、打印、分页等功能,则不需要 20 多个不同的 portlet,您可以使用一个 portlet 并拥有 20 多个 it 实例,每个实例都将配置为 enable.export , enable.print, data.criteria 等等。在 portlet 内部,您的逻辑将构建您需要的网格和数据。

如果您真的需要通用 Portlet,您可以尝试将所有 20 多个 Portlet 放在一个 .war 中。您只需包含在某些 portlet、扩展控制器等中常见的 jsp。

甚至更多... 如果您需要在 portlet 之间发送数据,您可以创建 javascript 控制器,通过 Ajax 获取数据并填写您的 jsps(在这种情况下,您可以使用一些模板)。请询问是否有不清楚的地方。

于 2013-02-07T11:33:54.100 回答
0

最好的解决方案是使用一个 portlet 来检索所有数据,并使用一个接口和不同的实现来概括数据检索——而不是使用不同的 portlet。

您可以尝试使用 Liferay 的 Interportlet Communication 工具将数据从源 portlet 提供给目标 portlet - http://www.liferay.com/community/wiki/-/wiki/Main/Inter-portlet+communication

但它有它自己的警告 - 您要么必须使用 AJAX 或 JS 事件在浏览器中提交数据,要么必须使用在服务器端工作的 JSR-286 (Portlets 2.0) 事件,但需要一个触发动作为了使事件发生(即打开带有操作 URL 而不是呈现 URL 的 portlet)。更多信息在这里 - http://www.liferay.com/community/wiki/-/wiki/Main/Portlet+to+Portlet+Communication

于 2013-11-20T00:55:59.200 回答