2

我在 Liferay 暂存模式中获取自定义属性(站点)的值时遇到问题。

我正在尝试在我的主题中使用以下代码获取值:

Map<String, Serializable> myAttributes = site.getExpandoBridge().getAttributes();

但是staging 的输出是空的:

{custom-attribute-1=, custom-attribute-2=}

现场输出:

{custom-attribute-1="mystring", custom-attribute-2="mystring"}

我正在使用 Liferay 6.2+

你有什么想法?谢谢你!

4

1 回答 1

0

您的问题似乎是“Liferay 功能”。如果您使用站点自定义属性或更广为人知的 Group Expando 值,则每个 Group Expando 值都指向其站点的 classPk。例如,我的 Expando Value data_ 是"21005"而 classPK (Group/Site Id) 是"20373"

您可以在 Liferay 数据库中查看:

SELECT * FROM lportal.expandovalue where data_ like 21005;

您将获得的 classPk "20373"是您的 Life-Site的classPk ,而不是您的 Staging-Site 的 classPk。

这是因为 Liferay 为您的暂存站点生成了一个新组,其中包含一个新的classPK(例如:"20791")和一个额外的数据库条目:lifeGroupId = "20373"

您可以在您的数据库中检查它:

SELECT * FROM lportal.group_ where liveGroupId like 20373;

然后您将获得您的暂存站点。

抱歉解释困难,但这是您遇到的难题。

解决方案是什么?

在您的主题(或您获得 Expando 值的地方)中,您必须检查它是否是 StagingGroup 并使用 LiveSite 的 expando 值。像这样的东西:

if (myGroup.isStagingGroup(){      //com.liferay.portal.model.Group
    myLiveGroup = myGroup.getLiveGroup;        
    Map<String, Serializable> myAttributes = myLiveGroup.getExpandoBridge().getAttributes(); //Use the expando values of Livesite
}

我希望我的回答可以帮助您在暂存站点上显示您的 expando 值。

于 2015-09-22T14:48:37.520 回答