我在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 +
你有什么想法吗?谢谢!
答案 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值。