目前,我以这种方式生成一个指向不同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 参数。
答案 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 /名称发生了变化,那么我没有看到任何其他方法,只是改变你的代码以匹配它。
如果有另一种好方法,那么我也很高兴知道它。