LIFERAY 6.2 - 如何在renderURL中指定另一个Portlet

时间:2017-02-14 12:32:53

标签: url liferay portlet

我很难使用“renderURL”。我创建了一个新的portlet,让我们称之为“Portlet A”和我的一个页面(这是一个简单的CRUD),当我直接测试我的Portlet时,它的工作完美。

问题在于我试图使用我的页面,通过另一个Portlet访问它,让我们称它为“Portlet B”,这里是复杂的,因为当我点击按钮“保存”时,而不是系统搜索我的方法save()在Portlet A的类MVCPortlet上,它在Portlet B的类MVCPortlet中搜索。

现在在Portlet B,我使用“renderURL”调用我的Portlet A页面,如下所示:

<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我指定我不想只是调用我的页面,但我也想去“Portlet A”。 我想去那个特定页面(search.jsp)和它所属的Portlet(Portlet 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>

谢谢。

2 个答案:

答案 0 :(得分:0)

根据需要,您希望从PortletB创建PortletA的呈现URL。 请从下面的代码片段中尝试一下。

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

可以从下面的代码中检索plid

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

答案 1 :(得分:0)

首先:一个portlet 一个包含一些JSP的文件夹。 portlet可以调用其插件中的任何jsp(插件可以包含任意数量的portlet)。

所以你的search.jsp 属于Portlet B。

当你在Portlet A中调用search.jsp时,活动portlet将始终是Portlet A是正常的。

实现所需目的的最简单方法是复制Portlet A的MVCPortlet中的保存按钮调用的操作方法。