2017-02-14 30 views
0

У меня возникли трудности с «renderURL». Я создал новый портлет, назовем его «Портлет А» и один из моих страниц (который является простым CRUD). Когда я тестирую непосредственно мой портлет, он отлично работает.LIFERAY 6.2 - Как указать другой портлет в renderURL

Проблема в том, что я пытаюсь использовать свою страницу, используя ее в другом портлете, назовем ее «портлетом B», и вот усложнение, потому что когда я нажимаю кнопку «сохранить», вместо системного поиска для моего метода сохранения() в классе MVCPortlet портлет А, он выбирает только в классе MVCPortlet портлетов B.

Сейчас на портлетов B, я называю страницу портлетов А с помощью «renderURL», как это:

<portlet:renderURL var="editInboxURL" > 
 
    <portlet:param name="mvcPath" value="/html/gerenciarinbox/search.jsp" /> 
 
    <portlet:param name="eventoId" value="<%= eventoId %>"/> 
 
    <portlet:param name="redirect" value="%=themeDisplay.getURLCurrent()%>"/> 
 
</portlet:renderURL>

и получить доступ к следующим образом:

<aui:button value="Go to Portlet A" onClick="${editInboxURL}" />

Мне было интересно, если Там как-то на renderURL указываю, что я не хочу просто называть мою страницу, но я хочу, чтобы перейти к «Портлет A» тоже. Я хочу перейти к этой конкретной странице (search.jsp) и к портлету, к которому принадлежит (Портлет A).

Может кто-нибудь мне помочь?

Я видел, что есть способ работать с "portlet: renderURL" addind portletName, но я попытался, и это не сработало, Он просто остался на той же странице, ничего не произошло.

<liferay-portlet:renderURL portletName="gopointseventos_WAR_gopointseventosportlet" var="editInboxURL" > 
 
<portlet:param name="mvcPath" value="/html/gerenciarinbox/search.jsp" /> 
 
<portlet:param name="eventoId" value="<%= eventoId %>"/> 
 
<portlet:param name="redirect" value="<%= themeDisplay.getURLCurrent()%>"/> 
 
</liferay-portlet:renderURL>

Спасибо.

ответ

0

С точки зрения понимания, вы хотите создать URL-адрес рендеринга PortletA из PortletB. Пожалуйста, попробуйте выполнить снимок кода ниже.

LiferayPortletURL anotherPortletURL = PortletURLFactoryUtil.create(request,portletName, 
plid, PortletRequest.RENDER_PHASE); 

, где plid может быть восстановлен из нижеследующего кода.

long plid= PortalUtil.getPlidFromPortletId(themeDisplay.getScopeGroupId(),isPrivateLayout, portletId); 
0

Прежде всего: портлет не папка с некоторыми JSPs внутри. Портлет может вызывать любой jsp внутри своего плагина (а плагин может содержать любое количество портлетов).

Так что ваш search.jsp это не принадлежит портлет B.

Когда в вашем портлет А вы называете search.jsp это нормально, что активный портлета всегда будет портлетов А.

Самый простой способ добиться того, что вам нужно, - скопировать метод действия, вызванный кнопкой сохранения в MVCPortlet портлета A.