前段时间我遇到了类似的问题,我认为您也面临同样的问题。这是我发现的。
假设在您的面板中,您有组合框,然后是编辑框(顺序很重要),编辑框的可见性取决于组合框的值。当您更改组合框的值时,编辑框可见或隐藏,但其值被清除(请参阅下面的代码片段)。
<xp:panel id="panel1">
<xp:comboBox id="comboBox1">
<xp:selectItem itemLabel="No" itemValue="No"></xp:selectItem>
<xp:selectItem itemLabel="Yes" itemValue="Yes"></xp:selectItem>
<xp:eventHandler event="onchange" submit="true"
refreshMode="partial" refreshId="panel1">
</xp:eventHandler>
</xp:comboBox>
<xp:inputText id="inputText1">
<xp:this.rendered><![CDATA[#{javascript:getComponent("comboBox1").getValue() == "Yes"}]]></xp:this.rendered>
</xp:inputText>
</xp:panel>
但是如果我交换这两个组件以便我们有编辑框然后是组合框(记住,顺序很重要)然后更改组合框的值,当编辑框再次可见时,编辑框中的值会恢复(参考下文代码片段)。
<xp:panel id="panel1">
<xp:inputText id="inputText1">
<xp:this.rendered><![CDATA[#{javascript:getComponent("comboBox1").getValue() == "Yes"}]]></xp:this.rendered>
</xp:inputText>
<xp:comboBox id="comboBox1">
<xp:selectItem itemLabel="No" itemValue="No"></xp:selectItem>
<xp:selectItem itemLabel="Yes" itemValue="Yes"></xp:selectItem>
<xp:eventHandler event="onchange" submit="true"
refreshMode="partial" refreshId="panel1">
</xp:eventHandler>
</xp:comboBox>
</xp:panel>
似乎在提交部分刷新触发组件之前组件中的值,而其他组件则没有。关于这种行为的原因,我不知道!我真的很想有人能对此有所了解,因为这导致我多次重新设计我的 XPages!