gpt4 book ai didi

java - Liferay 的 portlet 名称是如何生成的?

转载 作者:搜寻专家 更新时间:2023-10-31 08:27:23 27 4
gpt4 key购买 nike

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

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

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

而且它有效。但是当我尝试添加一些 ID 为“some-portlet-id”的自定义 portlet

$theme.runtime("some-portlet-id", "", $velocityPortletPreferences.toString())

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

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

提前致谢。

最佳答案

如果 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-id 的 portlet,那么 portlet 名称类似于以下内容:

someportletid_WAR_someportlet

这也引用了 Liferay 的主题名称。

另外请记住,Liferay portlet 的名称也有可选的实例 ID:

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

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

someportletid_WAR_someportlet_INSTANCE_abcd

但是请小心使用它们,因为您可以忽略该实例 ID 并放置您想要的所有内容。但是,如果您需要使用一些预填充的数据(例如 portlet 首选项)获取特定实例,您肯定需要以某种方式知道这一点。

关于java - Liferay 的 portlet 名称是如何生成的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15310945/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com