XPages:TabPanel的OnClick

XPages:TabPanel的OnClick,xpages,lotus-domino,xpages-ssjs,Xpages,Lotus Domino,Xpages Ssjs,我在我的xpage上有一个选项卡式面板,我想实现的是,如果用户切换了选项卡,那么当前的选项卡数据应该被保存,因为我已经在选项卡式面板的onClick上编写了代码,但这会停止任何要运行的服务器端代码 示例代码: <xp:tabbedPanel id="tabbedPanel1"> <xp:tabPanel label="Tab1" id="tabPanel1"> <xp:label id="label1" value="Good Morning">

我在我的xpage上有一个选项卡式面板,我想实现的是,如果用户切换了选项卡,那么当前的选项卡数据应该被保存,因为我已经在选项卡式面板的onClick上编写了代码,但这会停止任何要运行的服务器端代码

示例代码:

<xp:tabbedPanel id="tabbedPanel1">
   <xp:tabPanel label="Tab1" id="tabPanel1">
     <xp:label id="label1" value="Good Morning"></xp:label>
   </xp:tabPanel>
   <xp:tabPanel label="Tab2" id="tabPanel2">
    <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
     <xp:this.action><![CDATA[#{javascript:print("Click on Tab2");}]>
      </xp:this.action>
    </xp:eventHandler>
     <xp:label id="label2" value="Good Afternoon"></xp:label>
   </xp:tabPanel>
   <xp:tabPanel label="Tab3" id="tabPanel3">
    <xp:label id="label3" value="Good Evening"></xp:label>
   </xp:tabPanel>
</xp:tabbedPanel>

问题:单击tabPanel2(具有onClick事件代码)后,服务器端停止响应,甚至选项卡切换也停止


谢谢。

我知道这是一个有线解决方案,但请尝试使用jsonRpcService从客户端调用save

因此,您可以在客户端的每个点击点击事件中添加一个函数,这不会阻止服务器端的选项卡功能

<xp:text value="#{viewScope.save}"></xp:text>

<xp:tabbedPanel id="tabbedPanel1" selectedTab="tabPanel1">
    <xp:tabPanel label="Tab1" id="tabPanel1"
        onclick="saveDokumentHelper.save();">
        <xp:label id="label1" value="Good Morning"></xp:label>
    </xp:tabPanel>
    <xp:tabPanel label="Tab2" id="tabPanel2"
        onclick="saveDokumentHelper.save();">
        <xp:label id="label2" value="Good Afternoon"></xp:label>
    </xp:tabPanel>
    <xp:tabPanel label="Tab3" id="tabPanel3"
        onclick="saveDokumentHelper.save();">
        <xp:label id="label3" value="Good Evening"></xp:label>
    </xp:tabPanel>
</xp:tabbedPanel>

<xe:jsonRpcService id="jsonRpcService1"
    serviceName="saveDokumentHelper" state="true">
    <xe:this.methods>
        <xe:remoteMethod name="save">
            <xe:this.script><![CDATA[currentDocument.save();
viewScope.put("save","saved");]]></xe:this.script>
            </xe:remoteMethod>
        </xe:this.methods>
    </xe:jsonRpcService>


记住,这只是我想到的一种可能性,它可能有一些问题。我只使用viewScope变量对它进行了测试,它可以正常工作。我还没有用Document.save方法测试它。

我知道这是一个有点有线的解决方案,但请尝试使用jsonRpcService从客户端调用save

因此,您可以在客户端的每个点击点击事件中添加一个函数,这不会阻止服务器端的选项卡功能

<xp:text value="#{viewScope.save}"></xp:text>

<xp:tabbedPanel id="tabbedPanel1" selectedTab="tabPanel1">
    <xp:tabPanel label="Tab1" id="tabPanel1"
        onclick="saveDokumentHelper.save();">
        <xp:label id="label1" value="Good Morning"></xp:label>
    </xp:tabPanel>
    <xp:tabPanel label="Tab2" id="tabPanel2"
        onclick="saveDokumentHelper.save();">
        <xp:label id="label2" value="Good Afternoon"></xp:label>
    </xp:tabPanel>
    <xp:tabPanel label="Tab3" id="tabPanel3"
        onclick="saveDokumentHelper.save();">
        <xp:label id="label3" value="Good Evening"></xp:label>
    </xp:tabPanel>
</xp:tabbedPanel>

<xe:jsonRpcService id="jsonRpcService1"
    serviceName="saveDokumentHelper" state="true">
    <xe:this.methods>
        <xe:remoteMethod name="save">
            <xe:this.script><![CDATA[currentDocument.save();
viewScope.put("save","saved");]]></xe:this.script>
            </xe:remoteMethod>
        </xe:this.methods>
    </xe:jsonRpcService>


记住,这只是我想到的一种可能性,它可能有一些问题。我只使用viewScope变量对它进行了测试,它可以正常工作。我还没有使用Document.save方法对其进行测试。

我复制了该问题,但您的代码行中缺少一个右方括号“]”。应该是:我重复了这个问题,但您的代码在行中缺少一个结束方括号“]”。应该是:谢谢,听起来不错。我会尽力让你知道的。再次感谢。如果这对你有帮助,请考虑:谢谢,听起来不错。我会尽力让你知道的。再次感谢。如果这对您有所帮助,请考虑: