1

xpage にタブ付きパネルがあり、達成したいのは、ユーザーがタブを切り替えた場合、現在のタブ データを保存する必要があるため、tabPanel の 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 イベント コードを持つ) をクリックすると、サーバー側が応答を停止し、タブ スイッチも停止します。

ありがとう。

4

1 に答える 1

1

私はこれが少し有線のソリューションであることを知っていますが、jsonRpcService を使用して ClientSide から保存を呼び出してみてください。

したがって、サーバー側のタブ機能をブロックしないクライアント側のすべてのタップ onClick イベントに 1 つの関数を追加できます。

<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 メソッドでまだテストしていません。

于 2013-06-05T12:32:28.757 に答える