我怎样才能找到它的portlet是一个特定的Liferay页面上添加?如何找到Liferay的特定页面上添加portlet的?
例如:
我有三个页面:欢迎,维基和搜索。
现在,所有这些页面有加portlet和其中一些是instanceable的portlet(如网页内容显示和iframe的portlet)。
现在我想通过Welcome page
的Search page
的iframe-portlet
请求参数的形式传递一些信息。
我怎样才能找到它的portlet是一个特定的Liferay页面上添加?如何找到Liferay的特定页面上添加portlet的?
例如:
我有三个页面:欢迎,维基和搜索。
现在,所有这些页面有加portlet和其中一些是instanceable的portlet(如网页内容显示和iframe的portlet)。
现在我想通过Welcome page
的Search page
的iframe-portlet
请求参数的形式传递一些信息。
我发现两种方法可以做到这一点:
如果你想在其中找到您的portlet添加,然后在同一个页面上的portlet,您可以利用themeDisplay
对象的可用到您的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();
如果你想找到一些不同的页面上的Portlet,那么你应该知道的三件事即; friendly-url
,groupId
而这个页面是否是public-page
或网站(或社区)的private-page
,所以这里是代码:
// 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();
的portletIdList
包含完整的与他们instanceIds的portletIds。所以现在从列表中可以使用com.liferay.portal.util.PortletKeys.IFRAME
只是过滤掉/search
页面上的iframe-portlet
,你会得到类似48_INSTANCE_rPv9
。