如何在Liferay中查找添加在特定页面上的portlet?

如何在Liferay中查找添加在特定页面上的portlet?,liferay,liferay-6,portlet,Liferay,Liferay 6,Portlet,如何找到在特定Liferay页面上添加的portlet 例如: 我有三个页面:欢迎,维基和搜索 现在,所有这些页面都添加了portlet,其中一些是可实例化的portlet(如web内容显示和iframe portlet) 现在,我想以请求参数的形式将一些信息从欢迎页面传递到搜索页面上的iframe portlet,我找到了两种方法: 如果希望在添加portlet的同一页面上找到portlet,则可以使用portlet或JSP可用的主题显示对象: // In JSP List<String

如何找到在特定Liferay页面上添加的portlet

例如:
我有三个页面:欢迎,维基和搜索

现在,所有这些页面都添加了portlet,其中一些是可实例化的portlet(如web内容显示和iframe portlet)


现在,我想以请求参数的形式将一些信息从
欢迎页面
传递到
搜索页面
上的
iframe portlet
,我找到了两种方法:

  • 如果希望在添加portlet的同一页面上找到portlet,则可以使用portlet或JSP可用的
    主题显示
    对象:

    // In JSP
    List<String> portletIdList = themeDisplay.getLayoutTypePortlet().getPortletIds();
    
    // In portlet class
    ThemeDisplay themeDisplay = (ThemeDisplay) portletRequest.getAttribute(WebKeys.THEME_DISPLAY);
    List<String> portletIdList = themeDisplay.getLayoutTypePortlet().getPortletIds();
    

  • portletIdList
    包含完整的portletIds及其instanceId。因此,现在从列表中,您可以使用
    com.liferay.portal.util.PortletKeys.iframe
    /search
    页面上筛选出
    iframe portlet
    ,您将得到类似于
    48_INSTANCE\u rPv9

    的东西,这些年来仍然很有用:-)我一直在用编程的方法进行Primefaces“更新”对于完整的portlet组件ID,现在使用…getPortletDisplay().getNamespace()+。。。
    // 101543 is the SiteId, if it is a public-page then "false" and "/search" is the friendlyURL
    LayoutTypePortlet layoutTypePortlet = LayoutTypePortletFactoryUtil.create(LayoutLocalServiceUtil.getFriendlyURLLayout(101543, false, "/search"));
    List<String> portletIdList = layoutTypePortlet.getPortletIds();