【发布时间】:2014-09-01 12:05:50
【问题描述】:
我想知道了解现有或当前部署的 portlet/应用程序正在门户中某处使用的最佳方式是什么。
例如:
- 网页内容显示已添加到网页。
- 文档和媒体 portlet 已添加到网页中。
除了创建 LayoutListener 或扩展 LayoutLocalService 之外,还有其他方法可以监听这些事件。 如果我想跟踪这些事件,最好的方法是什么?
我在 SO 中找到了这个 question。但不是一个非常有用的答案。
【问题讨论】:
我想知道了解现有或当前部署的 portlet/应用程序正在门户中某处使用的最佳方式是什么。
例如:
除了创建 LayoutListener 或扩展 LayoutLocalService 之外,还有其他方法可以监听这些事件。 如果我想跟踪这些事件,最好的方法是什么?
我在 SO 中找到了这个 question。但不是一个非常有用的答案。
【问题讨论】:
从技术上讲,Liferay 有 ModelListeners(例如 LayoutListener),可以在 Layout 的属性更改时收到通知。但是,您应该只将它们用于与持久性相关的操作,而不是用于业务层操作。相反,使用 ServiceWrappers - 例如对于 LayoutLocalService。确定您感兴趣的 API 方法,包装它们并在原始实现之前或之后执行您的自定义代码。您可能需要包装一些方法,但这些服务中的代码更改将是干净的。
你举了一些例子,让我说几句
当您提到要添加到页面的“Web 内容显示 Portlet”时,这当然相对容易。但是,如果“Web 内容文章”现在因为符合条件而显示在 AssetPublisher 上,这并不容易。
如果您只是对在页面上添加 portlet 感兴趣,这比更改配置要容易。对于“Web 内容显示 Portlet”,这可能意味着现在页面上将显示不同的文章,即使该 Portlet 保持不变。
(当我写答案时,我的互联网连接中断了 - 我无法检查实际的 API,但希望在我可能无法再调查时保持此页面打开以便稍后提交)
【讨论】: