Java 定义另一个portlet的resourceUrl';当前portlet中的控制器';s JSP

Java 定义另一个portlet的resourceUrl';当前portlet中的控制器';s JSP,java,spring-mvc,liferay,portlet,Java,Spring Mvc,Liferay,Portlet,我有两个portlet,其中定义了一组控制器。我们正在使用SpringMVC。在视图(即JSP)中,我们定义了一些资源URL,如 <portlet:resourceURL var="ListResourceUrl" id="getList" ></portlet:resourceURL> 现在我想定义另一个参考另一个portlet中定义的控制器的resourceUrl。如何实现此目的?请尝试使用liferay-portlet-ext.tld而不是liferay-por

我有两个portlet,其中定义了一组控制器。我们正在使用SpringMVC。在视图(即JSP)中,我们定义了一些资源URL,如

<portlet:resourceURL var="ListResourceUrl" id="getList"  ></portlet:resourceURL>

现在我想定义另一个参考另一个portlet中定义的控制器的resourceUrl。如何实现此目的?

请尝试使用
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\u WAR\u portletname
是portlet的实际名称,它非常特定于Liferay。

如果要在控制器中以编程方式创建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);

@veeru-a-s这对你有用吗?如果是正确的答案,请考虑接受,否则请提供您的解决方案。谢谢,谢谢你!我唯一需要补充的是
@veeru-a-s请接受这个答案,它非常有用,而且效果很好。谢谢
HttpServletRequest httpRequest = PortalUtil.getHttpServletRequest(request);
String portletId = "...";
Layout page = LayoutLocalServiceUtil.getLayoutByFriendlyUrl(group, "...");
PortletURL portletURL = PortletURLFactoryUtil.create(
        httpRequest, portletId, page.getPlid(), PortletRequest.RESOURCE_PHASE);