我正在使用Liferay 6.1
我想从代码中删除Liferay 6.1中的portlet。
到目前为止,我所做的是:
<a onclick="Liferay.Portlet.close('#p_p_id_28_'); return false;">Remove</a>
上面的代码工作正常。但是它仅在当前页面上起作用,即它可以删除仅在当前页面上存在的portlet。
但是我想使用其布局ID删除可能在门户菜单上某些位置的portlet。
请提出一条出路。
提前致谢。
问候,
瓦伦·贾恩(Varun Jain)
最佳答案
public void removePortlets(ActionRequest request, ActionResponse response)
throws PortletException {
ThemeDisplay themeDisplay = (ThemeDisplay) request
.getAttribute(WebKeys.THEME_DISPLAY);
long groupId = themeDisplay.getScopeGroupId();
String friendlyURL = "/demochildpage";
boolean privateLayout = false;
long userId = themeDisplay.getUserId();
try {
Layout layout = LayoutLocalServiceUtil.getFriendlyURLLayout(
groupId, privateLayout, friendlyURL);
LayoutTypePortlet layoutTypePortlet = (LayoutTypePortlet) layout
.getLayoutType();
layoutTypePortlet.removePortletId(userId, "28");
LayoutLocalServiceUtil.updateLayout(layout.getGroupId(),
layout.getPrivateLayout(), layout.getLayoutId(),
layout.getTypeSettings());
} catch (Exception e) {
e.printStackTrace();
}
}