生成Liferay中不同portlet的URL

时间:2012-06-19 13:20:56

标签: java liferay portlet

目前,我以这种方式生成一个指向不同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是单例,所以不需要 INSTANCE 参数。

2 个答案:

答案 0 :(得分:3)

为了获得正确的portlet名称,您必须拥有其id。

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

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

答案 1 :(得分:3)

Portlet名称几乎没有变化,甚至liferay使用常量类(PortletKeys.java)来存储portlet ID并经常使用它。

它类似于portlet的主键,如果它发生更改,则可能意味着它是一个新的portlet。

因此,如果你的portlet依赖于第三方portlet,然后portlet的ID /名称发生了变化,那么我没有看到任何其他方法,只是改变你的代码以匹配它。

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