4

目前,我以这种方式生成一个指向不同 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 页面上所说的那样构建它。问题是,手动创建 aportletName太可怕了。想象一下一个错字,一个名字的改变......

所以我的问题是:是否有一个实用程序类、jsp 标记(或类似标签)能够自动创建有效的 portlet 名称(给定来自程序员的一些信息,例如 portlet 的名称)。

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

4

2 回答 2

3

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

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

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

于 2012-06-19T16:00:16.010 回答
3

Portlet 名称几乎没有变化,即使 Liferay 使用常量类 ( PortletKeys.java) 来存储 Portlet Id 并经常使用它。

它就像一个 portlet 的主键,如果它发生变化,可能意味着它是一个新的 portlet。

因此,如果您的 portlet 依赖于第三方 portlet,然后 portlet 的 ID/名称发生更改,那么我看不到任何其他方式,只能更改您的代码以匹配它。

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

于 2012-06-20T03:43:51.273 回答