2015-01-06 63 views
1

目標是實現用於顯示和管理包含嵌套Portlet的選項卡(類似於嵌套Portlet Portlet)的選項卡Portlet - portlet。如何更新PortletLayoutListener中的佈局

其中一個要求是從「刪除標籤Portlet上的佈局」中刪除嵌套的Portlet引用。

我實現了PortletLayoutListener,事實上,在刪除Tab Portlet時調用了onRemoveFromLayout方法。監聽器更新佈局。在調試偵聽器時,我可以驗證這些更改是寫入Liferay數據庫(LAYOUT表)的。 佈局實例通過LayoutLocalServiceUtil.getLayout(plid)方法獲取。 使用LayoutLocalServiceUtil.updateLayout方法執行更新。

問題是偵聽器是從UpdateLayoutAction中調用的,後者更新了Layout itsef並覆蓋了我的更改(它將它們還原)。

問題是 - 是否有可能更新PortletLayoutListener.onRemoveFromLayout方法中的佈局?如果沒有,我還有其他選擇嗎?

回答

0

嗨PortletLayoutListeners是打算用於相關的Portlet。因此,如果您想對portlet中的頁面上的更改做出反應。

如果你想改變門戶,我會看看模型監聽器。使用佈局模型偵聽器創建一個鉤子,並嘗試在afterUpdate方法中進行更改。但要小心不要影響性能。

你甚至可能需要兩個類來指示,第二個要做出改變。

+1

感謝您的回答。我需要處理一個事件,其中將Portlet從佈局中移除並在之後更新佈局。 'PortletLayoutListener'讓我處理這個特定的事件,但是監聽器不能更新佈局。從模型監聽器開始 - 模型監聽器並不意味着更新模型。通常他們會聽取模型更改並對不同實體執行操作。 –