:
ポートレットが、その後追加されたのと同じページ上のポートレットを検索したい場合は、ポートレットに利用可能themeDisplay
オブジェクトを利用することができますがまたは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();
あなたには、いくつかの異なるページ上のポートレットを検索したい場合は、次の3つのすなわちを知っている必要があります。 friendly-url
、groupId
このページはpublic-page
またはサイト(またはコミュニティ)のprivate-page
であるかどうか、ので、ここでのコードです:
portletIdList
// 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();
が自分instanceIdsと完全portletIdsが含まれています。だから今リストの中から
com.liferay.portal.util.PortletKeys.IFRAME
を使って
/search
ページの
iframe-portlet
をフィルターにかけるだけで、
48_INSTANCE_rPv9
のようになります。