IBM iWidget Постоянное хранилище атрибутов — ответ 404 при сохранении в Connections 4.0

Я пытаюсь сохранить постоянную переменную для экземпляров iWidget в IBM Connections 4.0.

Документация (ссылка & ссылка) приводит меня к следующему 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». В SystemOut.log серверов Connections нет выходных данных.

На данный момент он работает на странице «Мои виджеты» на домашней странице, но позже он также будет запущен в приложении «Сообщества».

Спасибо


person Andrew Welch    schedule 23.05.2013    source источник


Ответы (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>
person Andrew Welch    schedule 18.07.2013
comment
Я также могу подтвердить ошибку HTTP 404 в Connections 5 CR2. На мой взгляд, эта ошибка довольно серьезная, потому что она может нарушить всю функциональность виджета, если кто-то решит не работать с сообществами..! Если у кого-то есть дополнительная информация по этому поводу, пожалуйста, сообщите нам... - person kstratis; 29.11.2015