我有一个问题,获取我的自定义属性(站点)在Liferay分期模式的值。
我试图在我的主题中使用以下代码来获得值:
Map<String, Serializable> myAttributes = site.getExpandoBridge().getAttributes();但是,暂存的输出是空的:
{custom-attribute-1=, custom-attribute-2=}直播输出:
{custom-attribute-1="mystring", custom-attribute-2="mystring"}我在用Liferay 6.2+
你有什么想法吗?谢谢!
发布于 2015-09-22 14:48:37
你的问题似乎是"Liferay特性“。如果使用站点自定义属性或更常见的Group值,则每个Group值指向其站点的classPk。例如,我的Expando值data_为"21005“,classPK (组/站点Id)为"20373”。
您可以在Liferay数据库中查看此内容:
SELECT * FROM lportal.expandovalue where data_ like 21005;您将获得的classPk "20373“是您的生活站点的classPk和而不是您的分期站点的classPk。
这是因为Liferay使用一个新的classPK (例如:"20791")和一个额外的数据库条目lifeGroupId = "20373“为您的暂存站点生成一个新的组。
您可以在DB中检查它:
SELECT * FROM lportal.group_ where liveGroupId like 20373;然后你就能得到你的舞台了。
很抱歉给出了很难的解释,但这是你遇到的一个难题。
和什么是解决方案?
在您的主题中(或者在某个地方获得Expando值),您必须检查它是否是StagingGroup,并使用LiveSite的扩展值。就像这样:
if (myGroup.isStagingGroup(){ //com.liferay.portal.model.Group
myLiveGroup = myGroup.getLiveGroup;
Map<String, Serializable> myAttributes = myLiveGroup.getExpandoBridge().getAttributes(); //Use the expando values of Livesite
}我希望我的答案能帮助你在你的分期站点上显示你的扩张性值。
https://stackoverflow.com/questions/32626068
复制相似问题