2012-08-06 2 views
14

특정 Liferay 페이지에 추가되는 포틀릿은 어떻게 찾을 수 있습니까?Liferay의 특정 페이지에 추가 된 포틀릿을 찾는 방법은 무엇입니까?

예를 들어

: 오신 것을 환영합니다, 위키검색 :
나는 세 페이지가 있습니다.

이제 이러한 모든 페이지에는 포틀릿이 추가되고 일부는 웹 컨텐츠 표시 및 iframe 포틀릿과 같은 인스턴스 가능 포틀렛입니다.

이제 요청 매개 변수 형식의 정보를 Welcome page에서 Search pageiframe-portlet으로 전달하고 싶습니다.

나는이 두 가지 방법을 발견 한

답변

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. 일부 다른 페이지에 포틀릿을 찾으려면, 당신은 세 가지의 즉를 알아야한다; 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이 포함되어 있습니다. 이제 목록에서 페이지의 iframe-portlet을 필터링하여 com.liferay.portal.util.PortletKeys.IFRAME으로 필터링하면 48_INSTANCE_rPv9과 같은 형식이됩니다.

관련 문제