2017-10-30 10 views
0

저는 Liferay 6.2를 사용하고 있습니다.Liferay : 두 개의 포틀릿에 동시에 param을 보내는 데 사용 된 요청은 무엇입니까?

포틀릿 A에서 포틀릿 B로 매개 변수를 보내고 싶습니다. 그러나 포틀릿 B도 해당 매개 변수를 받길 원합니다.

보통이를 사용하지만 작동하지 않습니다

이 포틀릿 A.에 코드가

PortletURL renderURL = PortletURLFactoryUtil.create (요청, portletBName, themeDisplay.getPlid(), PortletRequest.RENDER_PHASE);

renderURL.setParameter ("mvcPath", "/html/carinformation/view_2.jsp"); renderURL.setParameter ("carId", car.getId());

어떤 방법을 사용할 수 있습니까? 예제 코드는 할 수 있습니다.

감사합니다.

답변

1

공용 렌더링 매개 변수를 정의해야합니다. 포틀릿 간 통신을위한 JSR 표준.

자세한 예제는 https://github.com/mir333/example/ 또는 google public render parameter example Liferay을 참조하십시오.

중요한 작업은 모든 참여 포틀릿에 대해 portlet.xml에 넣는 것입니다. 이 같은 JSP에서 리더의 URL이있을 때

<supported-public-render-parameter>carId</supported-public-render-parameter>

그런 다음 :

<portlet:renderURL var="rednerURL"> 
     <portlet:param name="mvcPath" value="/html/carinformation/view_2.jsp"/> 
     <portlet:param name="carId" value="${car.id}"/> 
    </portlet:renderURL> 
+0

안녕하세요, 시도했지만 충분하지 않습니다. 포틀릿 B의 JSP 페이지를 포틀릿 B의 actionURL에 전달할 때 포틀릿이 jspPage에 렌더링되고 포틀릿 B는이 jspPage에 렌더링되지 않습니다. 도와주세요. – Jin

+0

질문에 더 많은 설명을 추가했습니다. 포틀릿 B에서 포틀릿 A의 html을 수동으로 호출합니다. – Jin

+0

mvcPath 매개 변수를 공용 렌더링 매개 변수로 설정 했습니까? 너는 그렇게 할 수 없다. 공용 렌더링 매개 변수는 carId 여야합니다. 공개 렌더링 매개 변수는 주어진 공개 렌더링 매개 변수를 지원하는 모든 포틀릿으로 전송됩니다. –

0

좋아을, 나는 발견했다. 그냥 설정을 public 매개 변수가 필요합니다. 포틀릿 A에서 위와 같이 PortletURL을 만듭니다. 그리고 포틀릿 B에서 정상적으로 수신 할 수 있습니다.