Ответ 1
Я нашел два способа сделать это:
-
Если вы хотите найти портлеты на той же странице, на которой добавлен портлет, вы можете использовать объект
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();
-
Если вы хотите найти портлеты на другой странице, вам следует знать три вещи:
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
содержит портлеты с их экземплярами. Итак, теперь из списка вы можете просто отфильтровать iframe-portlet
на странице /search
с помощью com.liferay.portal.util.PortletKeys.IFRAME
, и вы получите что-то вроде 48_INSTANCE_rPv9
.