我有一个动态创建的liferay portlet实例,并以编程方式添加到布局中,如下所示
String portletId = objUtil.addPortlet("/prj/reports", "XYZPortlet_WAR_ecpmportlet", "column-2",groupId, "type: " + getSelectedType());
因此它将portlet添加到/reports
页面。
我想在portlet下面添加一个名为的按钮发送到仪表板单击按钮时,我想将此portlet永久地安装到用户仪表板。
注意:可以将任意数量的portlet实例添加到/report
s页面。
如您所见,XYZPortlet是在liferay-portlet.xml、liferay-display.xml中定义的portlet的id,它对于我添加到报告页面的所有portlet保持相同。
我想动态地为portlet实例分配一个新Id,并将其永久地安装到仪表板布局中。
谁能建议一种方法来做到这一点?
谢谢
获取全局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());