2

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

また、ウィジェットの XML 定義で変数を定義しようとしました。

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

これにより、ローカル インスタンスに値が正しく設定されます。また、この値を保存するためのサーバーへの PUT 要求も表示されます。404 レスポンス コードを返します。URL は次のとおりです。

/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 に出力はありません。

現在、これはホームページの「マイ ウィジェット」ページで実行されていますが、後でコミュニティ アプリケーションでも実行される予定です。

ありがとう

4

1 に答える 1

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>

ダッシュボード.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>
于 2013-07-18T00:43:23.927 に答える