2012-08-06 23 views
14

Come individuare quali portlet vengono aggiunti su una determinata pagina Liferay?Come trovare portlet aggiunti su una particolare pagina in Liferay?

Per esempio:
Ho tre pagine: Benvenuto, Wiki e ricerca.

Ora tutte queste pagine dispongono di portlet aggiunti e alcuni di essi sono portlet instancabili (come portlet di visualizzazione del contenuto Web e iframe).

Ora desidero passare alcune informazioni sotto forma di parametri di richiesta a iframe-portlet su Search page da Welcome page.

risposta

20

Ho trovato due modi per farlo:

  1. Se si desidera trovare i portlet sulla stessa pagina in cui viene aggiunto il portlet, allora, si può fare uso di themeDisplay oggetto disponibile per il portlet o 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(); 
    
  2. Se si desidera trovare i portlet qualche pagina diversa, allora si dovrebbe sapere tre cose cioè; friendly-url, groupId e se questa pagina è un public-page o private-page del Sito (o comunitario), ecco il codice:

    // 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(); 
    

Il portletIdList contiene i portletIds completi con le loro instanceIds. Quindi ora dalla lista puoi semplicemente filtrare lo iframe-portlet sulla pagina /search usando com.liferay.portal.util.PortletKeys.IFRAME e otterrai qualcosa come 48_INSTANCE_rPv9.

Problemi correlati