java在Liferay中生成指向不同portlet的URL
目前,我以这种方式生成另一个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's page上说的那样建造它。问题是,手动创建portletName
非常可怕。想象一下,一个打字错误,一个名字的改变
所以我的问题是:是否有一个实用程序类、jsp标记(或类似的)能够自动创建一个有效的portlet名称(给定程序员提供的一些信息,例如portlet的名称)
有一件事:我的portlet是单例的,所以不需要实例参数
# 1 楼答案
为了获得正确的portlet名称,您必须拥有它的id
Liferay提供
com.liferay.portal.service.PortletLocalServiceUtil
服务util类和方法getPortletById(String id)
。这将为您提供com.liferay.portal.model.Portlet
对象,从方法getPortletName()
中,您将获得portlet名称内置Portlet的ID在com中可用。利弗雷。门户。util。PortletKeys,因此,您不必硬编码ID(至少对于内置Portlet是这样)
# 2 楼答案
Portlet名称几乎不会更改,甚至liferay也使用常量类(^{} )来存储Portlet ID并经常使用它
它就像一个portlet的主键,如果它发生了变化,这可能意味着它是一个新的portlet
因此,如果您的portlet依赖于第三方portlet,并且portlet的ID/名称发生了变化,那么我看不到任何其他方法,只能通过更改代码来匹配它
如果还有别的好方法,我也很高兴知道