如何生成Liferay的portlet名称?

时间:2013-03-09 12:58:29

标签: java liferay portlet liferay-6

在大多数情况下,有必要了解Liferay portlet的实际名称。

特别是在Liferay的主题中,我可以添加“Login portlet”,如下所示:

$theme.runtime("58", "", $velocityPortletPreferences.toString())

它有效。但是当我尝试添加一些ID为“some-portlet-id”

的自定义portlet时
$theme.runtime("some-portlet-id", "", $velocityPortletPreferences.toString())

它不起作用。我怀疑,Liferay portlet的名称不等于portlet的ID。

在这种情况下,有人可以解释一下,这些名字是如何生成的?

提前致谢。

2 个答案:

答案 0 :(得分:10)

如果portlet在Liferay门户中,即ROOT,则该portlet ID等于portlet的名称。

但是如果你试图在其他war文件中获取portlet的名称(例如插件环境),在这种情况下,将根据此规则生成portlet名称:

[portlet ID] + _WAR_ + [webapp name, where portlet is placed]

请注意,portlet IDwebapp name都会从名称中排除-

因此,如果在WAR文件some-portlet-id中有一个标识为some-portlet的portlet,那么portlet名称如下所示:

someportletid_WAR_someportlet

这也是Liferay的主题名称。

另请注意,Liferay portlet的名称还有可选的实例ID:

[portlet ID] + _WAR_ + [webapp name, where portlet is placed] + _INSTANCE_ + [portlet instance ID]

对于那些instansable为真的portlet,它们是必需的。这基本上是4个任意字母。

someportletid_WAR_someportlet_INSTANCE_abcd

但是请小心他们,因为你可以忽略那些实例ID并放置你想要的一切。但是如果你需要使用一些预先填充的数据(例如portlet首选项)来获取特定实例,那么你肯定需要以某种方式知道它。

答案 1 :(得分:1)

如果您不想保留文档(或n1ckolas'答案)并查找实际的portlet ID(例如Liferay的数字),您也可以手动将所需的portlet添加到页面,然后转到“ “外观和感觉/高级样式”,您可以在那里看到portlet ID。如果有一个实例,添加一些你自己的随机内容使其独一无二,但更重要的部分,完整的portlet id,最容易找到这种方式。