我正在使用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();
        }
    }

09-03 19:07