[英]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.