2015-01-15 40 views
3

在xe:对话框(XPages Extension Library对话框)中,我想使用XSP.partialRefreshPost函数,但是当刷新输入的值时会丢失。在XPages Extension Library对话框中使用XSP.partialRefreshPost函数

以下示例说明了此问题。

  • ComboBox1,inputText1,ComboBox2,inputText2:OK,但不是在一个XE:对话框
  • ComboBox3,inputText3:因为它使用XSP NOK:OK,但不使用XSP.partialRefreshPost
  • ComboBox4,inputText4 .partialRefreshPost函数xe:对话框

我尝试更改属性xe:dialog没有成功。

如何在xe:对话框中使用XSP.partialRefreshPost来刷新OK?

感谢

<?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:label id="label1" value="refresh partial"></xp:label> 
    <xp:comboBox id="comboBox1"> 
     <xp:selectItems> 
      <xp:this.value><![CDATA[#{javascript:return ["1", "2", "3"];}]]></xp:this.value> 
     </xp:selectItems> 
     <xp:eventHandler event="onchange" submit="true" refreshMode="partial"refreshId="comboBox1"> 
     </xp:eventHandler> 
    </xp:comboBox> 
    <xp:inputText id="inputText1"> 
     <xp:eventHandler event="onchange" submit="true" refreshMode="partial" refreshId="inputText1"> 
     </xp:eventHandler> 
    </xp:inputText> 
    <xp:br></xp:br> 
    <xp:label id="label2" value="refresh XSP.partialRefreshPost"></xp:label> 
    <xp:comboBox id="comboBox2"> 
     <xp:selectItems> 
      <xp:this.value><![CDATA[#{javascript:return ["1", "2", "3"];}]]></xp:this.value> 
     </xp:selectItems> 
     <xp:eventHandler event="onchange" submit="false"> 
      <xp:this.script><![CDATA[XSP.partialRefreshPost("#{id:comboBox2}", {immediate: true});]]></xp:this.script> 
    </xp:eventHandler> 
    </xp:comboBox> 
    <xp:inputText id="inputText2"> 
     <xp:eventHandler event="onchange" submit="false"> 
      <xp:this.script><![CDATA[XSP.partialRefreshPost("#{id:inputText2}", {immediate: true});]]></xp:this.script> 
     </xp:eventHandler> 
    </xp:inputText> 
    <xp:br></xp:br> 
    <xe:dialog id="dialog1" partialRefresh="true"> 
     <xp:label id="label3" value="refresh partial"></xp:label> 
     <xp:comboBox id="comboBox3"> 
      <xp:selectItems> 
       <xp:this.value><![CDATA[#{javascript:return ["1", "2", "3"];}]]></xp:this.value> 
      </xp:selectItems> 
      <xp:eventHandler event="onchange" submit="true" 
       refreshMode="partial" refreshId="comboBox3"> 
      </xp:eventHandler> 
     </xp:comboBox> 
     <xp:inputText id="inputText3"> 
      <xp:eventHandler event="onchange" submit="true" 
       refreshMode="partial" refreshId="inputText3"> 
      </xp:eventHandler> 
     </xp:inputText> 
     <xp:br></xp:br> 
     <xp:label id="label4" value="refresh XSP.partialRefreshPost"></xp:label> 
     <xp:comboBox id="comboBox4"> 
      <xp:selectItems> 
       <xp:this.value><![CDATA[#{javascript:return ["1", "2", "3"];}]]></xp:this.value> 
      </xp:selectItems> 
      <xp:eventHandler event="onchange" submit="false"> 
       <xp:this.script><![CDATA[XSP.partialRefreshPost("#{id:comboBox4}", {immediate: true});]]></xp:this.script> 
      </xp:eventHandler> 
     </xp:comboBox> 
     <xp:inputText id="inputText4"> 
      <xp:eventHandler event="onchange" submit="false"> 
       <xp:this.script><![CDATA[XSP.partialRefreshPost("#{id:inputText4}", {immediate: true});]]></xp:this.script> 
      </xp:eventHandler> 
     </xp:inputText> 
    </xe:dialog> 
    <xp:button id="button1" value="dialog"> 
     <xp:eventHandler event="onclick" submit="false"> 
      <xp:this.script><![CDATA[XSP.openDialog('#{id:dialog1}');]]></xp:this.script> 
     </xp:eventHandler> 
    </xp:button> 
</xp:view> 
+0

这是完整的源代码吗?我看不到附加的数据源,因为您的值可能会丢失,因为服务器无法将它们中的任何一个保存在内存中。 – 2015-01-15 17:26:44

+0

为什么在inputText2的onchange事件期间对inputText2进行部分刷新?而且,就像奥利弗提到的那样,你在哪里存储数据?你至少应该使用一个作用域变量来保存数据。 – 2015-01-15 17:50:55

+0

这只是一个例子来显示部分刷新的问题 – JMR 2015-01-19 09:34:15

回答

9

partialRefreshPost如预期<xe:dialog>无法正常工作,例如,当您在组合框中选择一个值,则partialRefreshPost上改变事件所选择的值发送给服务器,但服务器的响应包含旧值并且组合框值会跳回旧值。即使将该字段绑定到像数据变量这样的数据也无济于事。

但有一个解决方法。添加参数execIdpartialRefreshPost

XSP.partialRefreshPost("#{id:comboBox4}", 
     {execId: "#{id:comboBox4}", immediate: true}) 

指定要刷新的元素,在这种情况下,相同的(comboBox4)。这样它就能按预期工作 - 就像在对话框外面一样。

+0

它的工作原理!非常感谢你 – JMR 2015-01-19 09:30:28

相关问题