我有一个动态创建的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并将其永久安装到仪表板布局。
有人可以建议一种方法吗?
由于
答案 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());