目标是实现一个Tab Portlet - 用于显示和管理包含嵌套portlet的选项卡的portlet(类似于嵌套Portlet Portlet)。
其中一个要求是从Tab Port on Tablet删除中删除嵌套的portlet引用。
我实现了PortletLayoutListener,实际上,在Tab Portlet删除时调用了onRemoveFromLayout方法。侦听器更新布局。在调试监听器时,我可以验证更改是否已写入Liferay数据库(到LAYOUT表)。 Layout实例是通过LayoutLocalServiceUtil.getLayout(plid)方法获得的。 使用LayoutLocalServiceUtil.updateLayout方法执行更新。
问题是从UpdateLayoutAction调用侦听器,然后更新布局itsef并覆盖我的更改(它将它们还原)。
问题是 - 是否可以在PortletLayoutListener.onRemoveFromLayout方法中更新布局?如果没有,我还可以使用其他选项吗?
答案 0 :(得分:0)
PortletLayoutListeners是用于与portlet相关的。因此,如果您想对portlet中页面上的更改做出反应。
如果你想更改门户网站,我会看一下模型监听器。使用Layout模型侦听器创建一个钩子,并尝试在afterUpdate方法中进行更改。但要注意不要影响性能。
您甚至可能要求两个类别进行指示,第二个类别进行更改。