IBM iWidget属性的持久存储 - 在Connections 4.0中保存时的响应

时间:2013-05-23 02:37:03

标签: widget connection persistent-storage ibm-connections

我正在尝试为IBM Connections 4.0中的iWidget实例保存持久变量

文档(link& link)引导我使用以下javascript(在编辑模式下使用iWidget运行):

this.iContext.getiWidgetAttributes().setItemValue("instance","helloWorld");
this.iContext.getiWidgetAttributes().save();  //or .commit(); as save is deprecated

我也尝试在widget XML定义中定义变量:

<iw:itemSet id="attributes" private="false" onItemSetChanged="itemSetChanged">
    <iw:item id="instance" value="" readOnly="false"/>
</iw:itemSet>

这在本地实例中正确设置了值,我也看到了对服务器的PUT请求以保存该值。它返回404响应代码。网址是:

/connections/opensocial/common/repos?st=default%3AcQitETUij2Iqg0A_8mB9A35-pRKmnH_dFUgT4rY-hERIC3ZTNW3hp0OeLr_SYZ2mXWW6OjMtcFPijI_YaIaCDZlduzYgn5FkYQUTiqngHgLqsBMG&type=itemSet&pageId=undefined&widgetId=widget_d785df84b58d4d459707a048014567f6_1369275060798&itemSetId=attributes

当我重新加载页面并尝试使用以下命令再次检索它时,不再存储该值:

this.iContext.getiWidgetAttributes().getItemValue("instance");

我注意到URL中有“pageId = undefined”。 Connections服务器的SystemOut.log中没有输出。

此时此操作正在主页“我的窗口小部件”页面中运行,但稍后也将在“社区”应用程序中运行。

由于

1 个答案:

答案 0 :(得分:1)

对于遇到此问题的其他人来说,这就是我找到的内容;

事实证明,通过主页的保存拒绝工作,但是当通过社区机制加载小部件时,我确实成功保存了实例数据;

用于保存的JavaScript(.save调用回调函数,但不是必需的):

if(this.inCommunity)
{
    this.iContext.getiWidgetAttributes().setItemValue("instance",contentToSave);
    this.iContext.getiWidgetAttributes().save(dojo.hitch(this,this.dashboardSaved));
}

加载已保存的数据:

this.instanceData = this.iContext.getiWidgetAttributes().getItemValue("instance");

小部件定义(在widgets-config.xml中)

<widgetDef defId="Dashboard" description="MyDash" modes="view edit" url="/Dashboard.xml" uniqueInstance="false">
    <itemSet>
        <item name="instance" value=""/>
    </itemSet>
</widgetDef>

Dashboard.xml

<iw:iwidget xmlns:iw="http://www.ibm.com/xmlns/prod/iWidget" iScope="Dashboard" supportedModes="view edit" mode="view" allowInstanceContent="true">
    <iw:resource uri="./dashboard.js"/>
    <iw:event id="view" handled="false" onEvent="onView"/>
    <iw:event id="edit" handled="false" onEvent="onEdit"/>
    <iw:event id="onRefreshNeeded" handled="true" onEvent="onRefresh"/>
    <iw:itemSet id="attributes" private="true" onItemSetChanged="itemSetChanged">
        <iw:item id="instance" readOnly="false"/>
    </iw:itemSet>
    <iw:content mode="view">
        <![CDATA[<div id="RootWidget"></div>]]>
    </iw:content>
    <iw:content mode="edit">
        <![CDATA[<div id="RootWidget"></div>]]>
    </iw:content>
</iw:iwidget>