【问题标题】:How to update Layout in PortletLayoutListener如何在 PortletLayoutListener 中更新布局
【发布时间】:2015-03-04 01:15:09
【问题描述】:

目标是实现一个选项卡 Portlet - 用于显示和管理包含嵌套 Portlet 的选项卡的 Portlet(类似于嵌套 Portlets Portlet)。

其中一个要求是从 Layout on Tab Portlet 移除中移除嵌套的 Portlet 引用。

我实现了 PortletLayoutListener,实际上,方法 onRemoveFromLayout 在 Tab Portlet 移除时被调用。侦听器更新布局。在调试侦听器时,我可以验证更改是否已写入 Liferay 数据库(写入 LAYOUT 表)。 Layout 实例是通过 LayoutLocalServiceUtil.getLayout(plid) 方法获取的。 使用 LayoutLocalServiceUtil.updateLayout 方法进行更新。

问题是监听器是从 UpdateLayoutAction 调用的,它随后会更新 Layout itsef 并覆盖我的更改(它会还原它们)。

问题是 - 是否可以在 PortletLayoutListener.onRemoveFromLayout 方法中更新布局?如果没有,我可以使用其他选项吗?

【问题讨论】:

    标签: liferay liferay-6


    【解决方案1】:

    您好,PortletLayoutListener 旨在用于与 portlet 相关的用途。因此,如果您想对 portlet 中页面上的更改做出反应。

    如果您想更改门户,我会查看模型侦听器。使用 Layout 模型侦听器创建一个钩子,并尝试在 afterUpdate 方法中进行更改。但注意不要影响性能。

    您甚至可能需要两个类,第一个做出指示,第二个做出改变。

    【讨论】:

    • 感谢您的回答。我需要处理一个事件,从布局中删除 portlet 并在之后更新布局。 PortletLayoutListener 让我处理这个特定事件,但侦听器无法更新布局。至于模型侦听器 - 模型侦听器并不意味着更新模型。通常他们会监听模型的变化并对不同的实体执行操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 2022-01-16
    • 2014-10-08
    • 2016-12-30
    • 1970-01-01
    • 2021-02-20
    • 2011-09-21
    相关资源
    最近更新 更多