2013-04-24 41 views
2

我有動態創建並添加到佈局編程一個Liferay的portlet實例如下如何以編程方式動態添加liferay portlet實例,並在點擊按鈕時將portlet安裝到儀表板頁面?

String portletId = objUtil.addPortlet("/prj/reports", "XYZPortlet_WAR_ecpmportlet", "column-2",groupId, "type: " + getSelectedType()); 

所以它增加了一個門戶到/reports頁面。
我想在portlet下面添加一個名爲的按鈕,點擊按鈕我想將此portlet永久安裝到用戶儀表板,發送到儀表板

注:可以有任何數量添加到/report秒Page portlet實例的。

如您所見,XYZPortlet是liferay-portlet.xml中定義的portlet的id,liferay-display.xml對於添加到報告頁面的所有portlet保持不變。

我想動態地將一個新的Id分配給portlet實例,並將其永久安裝到儀表板佈局。

任何人都可以請建議一種方法來做到這一點?

感謝

+0

你有什麼還沒有嘗試什麼不成? – Mark 2013-04-25 07:37:10

+0

@mark我需要將添加到報告頁面的Portlet實例安裝到用戶儀表板。 – 2013-04-26 06:26:09

+0

@PadmanabhaVn你是什麼意思聲明「我想動態地分配一個新的Id到portlet實例」?你能否就此澄清一下。? – 2013-04-26 07:43:43

回答

2

簡單獲得全球portletId並將其添加到用戶主頁:

LayoutTypePortlet layoutTypePortlet = (LayoutTypePortlet) userlayout.getLayoutType(); 
String portletInstanceId = layoutTypePortlet.addPortletId(0, portletId, columnId, -1, false); 
LayoutLocalServiceUtil.updateLayout(userlayout.getGroupId(), userlayout.isPrivateLayout(), userlayout.getLayoutId(), userlayout.getTypeSettings()); 
+0

可以請你解釋你發送的代碼 – 2013-05-01 07:18:20

+0

1.從用戶主頁(儀表板)獲取'Layout'對象。 2.獲取'LayoutTypePortlet'並將'portletId'放置在應該放置Portlet的位置。 3.保存更改。完。 – Mark 2013-05-02 08:27:15

+0

感謝您的答覆標記..我想添加很多這樣的portlet到儀表板,我希望portlet出現在更多的portlet下拉列表中。是否有可能? – 2013-05-02 11:21:03

相關問題