Ошибка установки переменной sessionScope в сетке KendoUI для открытия документа

Мое приложение использует KendoUI Grids для пользовательских представлений, но Xpages с пользовательскими элементами управления для страниц форм (по крайней мере, на данный момент).

Xpage ищет переменную sessionScope, чтобы определить, является ли это новым документом (ничего в области действия Var) или обновлением (unid находится в переменной).

<xp:this.data>
        <xe:objectData
            saveObject="#{javascript:PCModel.save()}"
            var="PCModel">
            <xe:this.createObject><![CDATA[#{javascript:var pc = new com.scoular.model.PC();
var unid = sessionScope.get("key");

if (unid != null) {
    pc.loadByUnid(unid);
    sessionScope.put("key","");
    viewScope.put("readOnly","Yes");
} else {
    pc.create();
    viewScope.put("readOnly","No");
}
viewScope.status = pc.status;
return pc;}]]></xe:this.createObject>
        </xe:objectData>
    </xp:this.data>

Это сработало для полностью приложения Xpage. Я просто поместил значение в ключ sessionScope и вызвал Xpage.

В коде пользовательского интерфейса Kendo я использую javascript на стороне клиента и не вижу способа установить sessionScope.

Я могу управлять URL-адресом, поэтому я могу переключать передачи и использовать его, однако данные для моего приложения находятся в другой БД, чем мой код.

Любая помощь будет принята с благодарностью.


person Bryan Schmiedeler    schedule 06.10.2016    source источник


Ответы (1)


Самый простой способ — использовать URL-адрес:
вызовите XPage с параметром ?key=... и измените строку кода CSJS на

var unid = param.key;

Если вам действительно нужно установить переменную sessionScope со стороны клиента,
добавьте это пустое вычисляемое текстовое поле.

<xp:text
    escape="true"
    id="setSessionScope"
    value="#{javascript: if (param.key) {sessionScope.key = param.key} ''}" />

на свой XPage и установите переменную sessionScope в коде CSJS с помощью

XSP.partialRefreshGet("#{id:setSessionScope}", {params: {'key': 'your key'}})
person Knut Herrmann    schedule 06.10.2016
comment
Это прекрасно работает. Я внес небольшие изменения. Я изменил var unid = params.key на var unid = context.getUrlParameter(key); Это работает отлично. Спасибо! - person Bryan Schmiedeler; 06.10.2016
comment
Вы правы, параметры неверны. Это должен быть параметр. Я обновил свой ответ. - person Knut Herrmann; 06.10.2016