在父面板上完成部分刷新后,Xpages REST服务不会重新计算视图名称

在父面板上完成部分刷新后,Xpages REST服务不会重新计算视图名称,xpages,xpages-extlib,Xpages,Xpages Extlib,要检查rest服务控件是否不支持viewName属性的context.getSubmittedValue()? 在父面板上完成partialRefresh时,未计算REST服务视图名称。 我试图加载不同的视图(用于显示的DataTable),需要使用JSON对象。然而,当我单击accordion条目更新另一个自定义控件中的面板时,我可以看到提交的值使用computed字段进行更改,但我的REST服务控件仍将返回旧数据。以下是您想要查看的代码: <?xml version="1.0" enc

要检查rest服务控件是否不支持viewName属性的context.getSubmittedValue()? 在父面板上完成partialRefresh时,未计算REST服务视图名称。 我试图加载不同的视图(用于显示的DataTable),需要使用JSON对象。然而,当我单击accordion条目更新另一个自定义控件中的面板时,我可以看到提交的值使用computed字段进行更改,但我的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>

在对范围变量和计算字段进行了大量试验后,发现只有sessionScope在这种情况下有效。不确定这是否是一个理想的解决方案,因为人们可能会在浏览器中打开多个选项卡,这可能会导致冲突。 欢迎提出意见