Хотите проверить, не соблюдает ли элемент управления rest service context.getSubmittedValue () для свойства viewName? Имя представления службы REST не вычисляется при выполнении частичного обновления на родительской панели. Я пытаюсь загрузить разные представления (DataTable используется для отображения), и мне нужно работать с объектом JSON. Однако, когда я нажимаю на запись аккордеона, которая обновляет панель в другом настраиваемом элементе управления, я вижу, что отправленное значение изменяется с использованием вычисляемого поля, но мой служебный элемент управления REST по-прежнему будет возвращать старые данные. Вот код, который вы хотите посмотреть:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex">
<xp:panel id="panelMiddle">
<xp:text escape="true" id="computedField1" value="#{javascript:context.getSubmittedValue()}"></xp:text>
<xe:restService id="restService1" pathInfo="data" preventDojoStore="true" state="false">
<xe:this.service>
<xe:viewItemFileService defaultColumns="true" contentType="application/json" compact="true" systemColumns="0">
<xe:this.viewName><![CDATA[#{javascript:var v = context.getSubmittedValue();
if (null == v){
v = application.getString("defaultView");
}
}]]></xe:this.viewName>
<xe:this.count><![CDATA[#{javascript:
var v = context.getSubmittedValue();
if (null == v){
v = application.getString("defaultView");
}
database.getView(v).getEntryCount();
}]]></xe:this.count>
</xe:viewItemFileService>
</xe:this.service>
</xe:restService>
<div id="demo"></div>
<xp:eventHandler event="onClientLoad" submit="false">
<xp:this.script><![CDATA[$(document).ready(function() {
$.ajax({
url:"New.xsp/data",
dataType:"json",
success:
function(data){
var colHeaders = [];
var tarr = [];
$.each(data.items[0], function (key, val) {
if(key.indexOf("@")==-1){
colHeaders.push({"title":key});
//colHeaders.push({"data":key});
}
});
$.each(data.items,function(v,i){
var temp = [];
$.each(i,function(k,vv){
if(k.indexOf("@")==-1){temp.push(vv)};
})
tarr.push(temp);
})
$('#demo').html( '<table cellpadding="0" cellspacing="0" border="0" class="table table-striped table-bordered table-hover" id="example"></table>' );
$('#example').DataTable( {
"data": tarr,
"columns": colHeaders
} );
}
});
});]]></xp:this.script>
</xp:eventHandler>
</xp:panel>
</xp:view>
1 ответ
После долгих испытаний с переменными области видимости и вычисляемыми полями выяснилось, что в этом сценарии работает только sessionScope. Не уверен, что это идеальное решение, поскольку люди могут открывать более одной вкладки в браузере, что может вызвать конфликты. Идеи приветствуются.
Похожие вопросы
Новые вопросы
xpages
XPages - это платформа IBM для разработки веб-приложений и мобильных приложений для совместных и социальных приложений, созданная на основе платформ IBM Domino и IBM XWork Server.