有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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是单例的,所以不需要实例参数


共 (2) 个答案

  1. # 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. # 2 楼答案

    Portlet名称几乎不会更改,甚至liferay也使用常量类(^{})来存储Portlet ID并经常使用它

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

    因此,如果您的portlet依赖于第三方portlet,并且portlet的ID/名称发生了变化,那么我看不到任何其他方法,只能通过更改代码来匹配它

    如果还有别的好方法,我也很高兴知道