繁体   English   中英

在Liferay中生成指向其他Portlet的URL

[英]Generate an URL to different portlet in Liferay

当前,我以这种方式生成指向另一个portlet的URL:

<liferay-portlet:actionURL var="custom" portletName="portlet2_WAR_portlet2">
   <portlet:param name="action" value="advanced"/>
   <portlet:param name="value" value="321"/>
</liferay-portlet:actionURL>

最重要的部分是portletName参数。 就像他们在Liferay的页面上说的那样构建它。 问题是,手动创建portletName太可怕了。 试想一个错字,一个名字的变化...

所以我的问题是:是否有一个实用程序类,jsp标记(或类似标记)能够自动创建有效的Portlet名称(从程序员那里得到一些信息,例如Portlet的名称)。

一件事:我的portlet是单例,因此不需要INSTANCE参数。

为了获得正确的Portlet名称,您必须具有其ID。

Liferay提供com.liferay.portal.service.PortletLocalServiceUtil服务util类和方法getPortletById(String id) 这将为您提供com.liferay.portal.model.Portlet对象,并从方法getPortletName()获得Portlet名称。

内置portlet的ID在com.liferay.portal.util.PortletKeys中可用,因此,您不必强行修改ID(至少对于内置portlet)。

Portlet名称几乎不变,即使liferay使用常量类( PortletKeys.java )来存储Portlet Ids并经常使用它。

它像Portlet的主键一样,如果更改,可能意味着它是新的Portlet。

因此,如果您的portlet依赖于第三方portlet,然后该portlet的ID /名称发生变化,那么除了更改代码以使其与之匹配外,我看不到其他任何方法。

如果还有另一种好的方法,那么我也将很高兴知道它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM