Wie finde ich heraus, welche Portlets auf einer bestimmten Liferay-Seite hinzugefügt wurden?
Beispielsweise:
Ich habe drei Seiten: Herzlich willkommen, Wiki und Suche.
Auf all diesen Seiten wurden jetzt Portlets hinzugefügt, und einige von ihnen sind instanziierbare Portlets (z. B. Webinhaltsanzeige- und Iframe-Portlets).
Nun möchte ich einige Informationen in Form von Anforderungsparametern an die übermitteln iframe-portlet
auf der Search page
von dem Welcome page
.
Antworten:
20 für die Antwort № 1Ich habe zwei Möglichkeiten gefunden, dies zu tun:
Wenn Sie die Portlets auf derselben Seite finden möchten, auf der Ihr Portlet hinzugefügt wurde, können Sie sie verwenden
themeDisplay
Objekt, das für Ihr Portlet oder Ihre JSP verfügbar ist:// 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();
Wenn Sie die Portlets auf einer anderen Seite suchen möchten, sollten Sie drei Dinge wissen, nämlich:
friendly-url
,groupId
und ob diese Seite apublic-page
oderprivate-page
der Site (oder Community), hier also der Code:// 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();
Das portletIdList
enthält die portletIds mit ihren instanceIds. Nun können Sie aus der Liste das herausfiltern iframe-portlet
auf der /search
Seite mit com.liferay.portal.util.PortletKeys.IFRAME
und du wirst sowas bekommen 48_INSTANCE_rPv9
.