我正在尝试为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中没有输出。
此时此操作正在主页“我的窗口小部件”页面中运行,但稍后也将在“社区”应用程序中运行。
由于
答案 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>