2

我有一个动态创建的 liferay portlet 实例并以编程方式添加到布局中,如下所示

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

因此,它向/reports页面添加了一个 portlet。
我想在 Portlet 下方添加一个按钮,该send to dashboard按钮在单击我想将此 Portlet 永久安装到用户仪表板的按钮时调用。

注意:可以将任意数量的 portlet 实例添加到/reports 页面。

如您所见,XYZPortlet 是 liferay-portlet.xml 中定义的 portlet 的 ID,liferay-display.xml 对于我添加到报告页面的所有 portlet 保持相同。

我想动态地为 portlet 实例分配一个新的 ID 并将其永久安装到仪表板布局中。

谁能建议一种方法来做到这一点?

谢谢

4

1 回答 1

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());
于 2013-04-29T13:57:33.043 回答