Xpages 当动态组合框的项目得到更新时,它不会更新其绑定scopevar

Xpages 当动态组合框的项目得到更新时,它不会更新其绑定scopevar,xpages,Xpages,我用组合框遇到了一些麻烦。下面是一个复制/粘贴示例代码来演示我的问题 <xp:this.beforeRenderResponse><![CDATA[#{javascript:// viewScope.value1 = "document.getItemValueString('value1')" + viewScope.document; viewScope.value2 = "document.getI

我用组合框遇到了一些麻烦。下面是一个复制/粘贴示例代码来演示我的问题

    <xp:this.beforeRenderResponse><![CDATA[#{javascript://  
        viewScope.value1 = "document.getItemValueString('value1')" + viewScope.document;
        viewScope.value2 = "document.getItemValueString('value2')" + viewScope.document;}]]>
    </xp:this.beforeRenderResponse>

    <xp:button
        value="change document"
        id="button1">
        <xp:eventHandler
            event="onclick"
            submit="true"
            refreshMode="complete">
            <xp:this.action><![CDATA[#{javascript: viewScope.document = new Date().getMilliseconds()//}]]></xp:this.action>
        </xp:eventHandler>
    </xp:button>
<br></br>
    <xp:comboBox id="comboBox1" value="#{viewScope.value3}">
        <xp:selectItems>
            <xp:this.value><![CDATA[#{javascript:viewScope.value1;}]]></xp:this.value>
        </xp:selectItems>
        <xp:selectItems>
            <xp:this.value><![CDATA[#{javascript:viewScope.value2;}]]></xp:this.value>
        </xp:selectItems>
        <xp:eventHandler
            event="onchange" submit="true" refreshMode="complete">
            <xp:this.action><![CDATA[#{javascript://}]]></xp:this.action>
        </xp:eventHandler>
    </xp:comboBox>
    
    <br></br>
    <xp:text escape="true" id="computedField1" value="#{viewScope.value1}"></xp:text>
    <br></br>
    <xp:text escape="true" id="computedField2" value="#{viewScope.value2}"></xp:text>
    <br></br>
    <xp:text escape="true" id="computedField3" value="#{viewScope.value3}"> </xp:text>
我试图实现的是:我有一个组合框,其中包含两个或更多计算的selectItems。它们取决于当前选择的文档。为了演示文档的切换,我在本例中使用了ButtonChange文档。选择新文档时,beforeRenderResponse事件 从文档中获取itemvalues并将它们放入viewscope变量中。我必须将这两个值分开,以便不能对它们使用数组。到目前为止一切正常,但是:如果我选择一个值,例如value2timestamp1,并执行切换文档,则组合框绑定到的viewScope.value3不会更新。 它显示上一个文档中的旧值2,直到触发其onChange事件


如何强制组合框使用其selectItems更新其viewScope变量?

找到了一个至少适用于我的copy/pase示例的解决方案:

<xp:this.beforeRenderResponse><![CDATA[#{javascript://  
    viewScope.value1 = "document.getItemValueString('value1')" + viewScope.document;
    viewScope.value2 = "document.getItemValueString('value2')" + viewScope.document;
    var list = new Array();
        list.push(value1);
        list.push(value2);
    if(!@IsMember(viewScope.value3,list)){
        viewScope.value3 = list[0];//list.pop();
    }}]]>
</xp:this.beforeRenderResponse>

现在,如果文档被更改,viewScope.value3将更改为value1。

似乎beforeRenderResponse太晚了,无法更改它。我已经考虑过这一点,但事实是,如果我在beforeRenderResponse中添加以下行,那么更改项目的时间已经足够早了:例如viewScope.value3=value1我也可以更改它,但我遇到了问题用户输入被覆盖。我想我必须阅读value3并验证它是否是新selectItems的成员。。。