Liferay - 自定义属性在分段时为空

时间:2015-09-17 08:45:32

标签: liferay staging expando custom-attribute

我在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 +

你有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您的问题似乎是“Liferay功能”。如果您使用站点自定义属性或更好地称为组展开值,则每个组Expando值都指向其站点的classPk。例如,我的Expando值data_是“21005”,classPK(组/站点ID)是“20373”

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

SELECT * FROM lportal.group_ where liveGroupId like 20373;

您将获得的classPk “20373”是您生命站点的 classPk 您的Staging-Site的classPk。

这是因为Liferay使用新的 classPK (例如:“20791”)和额外的数据库条目为您的临时站点生成一个新组: lifeGroupId =“20373”

您可以在数据库中查看:

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值的某个地方)中,您必须检查它是否是StagingGroup并使用LiveSite的expando值。这样的事情:

{{1}}

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