在当前portlet的JSP中定义另一个portlet控制器的resourceUrl

时间:2013-03-01 10:11:14

标签: java spring-mvc liferay portlet

我有两个portlet,其中定义了一组控制器。我们正在使用Spring MVC。在View,JSP中,我们定义了一些像

这样的resourceUrls
<portlet:resourceURL var="ListResourceUrl" id="getList"  ></portlet:resourceURL>

这指的是我定义为

的控制器
@ResourceMapping("getList")
    @ResponseBody
public ModelAndView getList(ResourceRequest request,ResourceResponse response) throws IOException {

.........
}

现在我想定义另一个resourceUrl,引用另一个portlet中定义的控制器。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

请尝试使用liferay-portlet-ext.tld代替liferay-portlet.tld

这里的标签数量几乎相同,但您可以添加一些额外的参数。

  

liferay-portlet:resourceURL类似于portlet:resourceURL,但它有   附加属性plid,portletName,anchor和encrypt。

所以你可以使用以下内容:

<%@taglib prefix="liferay-portlet" uri="http://liferay.com/tld/portlet" %>

<liferay-portlet:resourceURL id="getList" var="ListResourceUrl" 
                             portletName="portletname_WAR_portletname" />

其中portletname_WAR_portletname是portlet的实际名称,这是Liferay特有的。

答案 1 :(得分:0)

如果要在控制器中以编程方式创建PortletURL,请使用PortletURLFactoryUtil。以下代码段应该给你一个想法:

HttpServletRequest httpRequest = PortalUtil.getHttpServletRequest(request);
String portletId = "...";
Layout page = LayoutLocalServiceUtil.getLayoutByFriendlyUrl(group, "...");
PortletURL portletURL = PortletURLFactoryUtil.create(
        httpRequest, portletId, page.getPlid(), PortletRequest.RESOURCE_PHASE);