我有两个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中定义的控制器。我怎样才能做到这一点?
答案 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);