2012-08-06 5 views
14

特定のLiferayページに追加されるポートレットはどのようにして見つけることができますか?例についてはLiferayの特定のページに追加されたポートレットを見つける方法は?


私は3つのページがあります。ウィキ検索ようこそ。

これらのページにはすべて、ポートレットが追加されており、その中にはインスタンス可能なポートレット(Webコンテンツ表示とiframeポートレットなど)があります。

ここで、Welcome pageからSearch pageiframe-portletにリクエストパラメータの形式で情報を渡したいとします。

私はこれを行うには、2つの方法を発見した

答えて

20

  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(); 
    
  2. あなたには、いくつかの異なるページ上のポートレットを検索したい場合は、次の3つのすなわちを知っている必要があります。 friendly-urlgroupIdこのページは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のようになります。

関連する問題