部分刷新后,xpages组合框值设置为null

时间:2014-09-05 11:02:27

标签: xpages xpages-ssjs

我最近有些头疼,部分刷新。

组合框在onChange事件上激活对面板的部分刷新(用于从该面板渲染字段):

    <xp:comboBox value="#{Contr.txt_tipcontractcv}" id="txt_tipcontractcv1">

        <xp:selectItems id="selectItems1">
                        <xp:this.value><![CDATA[#{javascript:return ""}]]></xp:this.value>
        /xp:selectItems>
        <xp:selectItems id="selectItems2">
                        <xp:this.value><![CDATA[#{javascript:@DbColumn(@DbName(),"SetupvwTipuriContracteC",1);}]]></xp:this.value>
        </xp:selectItems>
        <xp:eventHandler event="onchange" submit="true">
                    <xp:this.script><![CDATA[XSP.partialRefreshGet("#{id:FisaP}", {

    });
    ]]>             </xp:this.script>
        </xp:eventHandler>
</xp:comboBox>

面板代码&amp;该领域:

<xp:panel id="FisaP">
            <xp:label id="label4">
                <xp:this.value><![CDATA[#{javascript:"Fisa contract "+ Contr.getItemValueString("txt_tipcontractcv1")}]]></xp:this.value>
                <xp:this.rendered><![CDATA[#{javascript:
            Contr.getItemValueString("txt_tipcontractcv1") == "Vanzare-Cumparare"
         }]]></xp:this.rendered>

            </xp:label>
        </xp:panel>

但是,当我选择一个值时,部分刷新似乎被触发,但是立即组合框值为空 - 并且发生了xpage的总刷新,并且未显示面板中的字段。我错过了什么?

1 个答案:

答案 0 :(得分:0)

你的onchange活动比你预期的要多得多:

  1. XSP.partialRefreshGet()表示你正在部分刷新 面板。但是因为它是partialRefreshGet(),所以你没有通过 用户正在进行的任何更改。所以服务器不知道任何 用户所做的更改。
  2. submit =“true”表示它正在对页面进行完全刷新 CSJS你正在跑步。这样就可以删除用户拥有的任何内容 进入页面的任何位置。
  3. 我认为你想要运行你的CSJS,需要submit =“false”。

    如果您想在onc​​hange运行之前立即考虑浏览器的更改,请不要使用partialRefreshGet。而是使用:

    <xp:eventHandler event="onchange" submit="true" refreshMode="partial" refreshId="FisaP" disableValidators="true">
            </xp:eventHandler>
    

    转换器仍在运行,因此,如果您放置,例如将文本转换为数字字段,它仍然会失败。