如何以编程方式动态添加liferay portlet实例并单击按钮将portlet安装到仪表板页面?

时间:2013-04-24 13:51:59

标签: java liferay portlet

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

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

因此它在/reports页面添加了一个portlet 我想在portlet下面添加一个名为发送到仪表板的按钮,点击我要将此portlet永久安装到用户仪表板的按钮。

注意: 可以在/report页面添加任意数量的portlet实例。

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

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

有人可以建议一种方法吗?

由于

1 个答案:

答案 0 :(得分: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());