Xpages REST 服务不会在父面板上完成 partialRefresh 时重新计算视图名称
Xpages REST Service does not recompute view name hen partialRefresh is done on parent panel
想要检查休息服务控制是否不支持 viewName 属性 的 context.getSubmittedValue()?
在父面板上完成 partialRefresh 时,未计算 REST 服务视图名称。
我正在尝试加载不同的视图(用于显示的数据表)并且需要使用 JSON 对象。但是,当我单击更新另一个自定义控件中的面板的手风琴条目时,我可以看到使用计算字段更改提交的值,但我的 REST 服务控件仍将 return 旧数据。如果您想查看以下代码:
<?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>
在对作用域变量和计算字段进行多次试验后,发现只有 sessionScope 在这种情况下有效。不确定这是否是一个理想的解决方案,因为人们可能会在浏览器中打开多个选项卡,这可能会导致冲突。
欢迎提出想法。
想要检查休息服务控制是否不支持 viewName 属性 的 context.getSubmittedValue()? 在父面板上完成 partialRefresh 时,未计算 REST 服务视图名称。 我正在尝试加载不同的视图(用于显示的数据表)并且需要使用 JSON 对象。但是,当我单击更新另一个自定义控件中的面板的手风琴条目时,我可以看到使用计算字段更改提交的值,但我的 REST 服务控件仍将 return 旧数据。如果您想查看以下代码:
<?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>
在对作用域变量和计算字段进行多次试验后,发现只有 sessionScope 在这种情况下有效。不确定这是否是一个理想的解决方案,因为人们可能会在浏览器中打开多个选项卡,这可能会导致冲突。 欢迎提出想法。