1

コードの実行中に待機中のダイアログ/アイコン/画像を使用したい。コードが終了したら、そのアイコンを停止します。Web で入手できる資料を確認しましたが、取得または理解できませんでした。

バックエンドでエージェントを呼び出す SSJS スクリプトを使用しています。処理に 20 ~ 30 秒かかりました。

通ったけど使い方がわからない?

https://openntf.org/XSnippets.nsf/snippet.xsp?id=bootstrap-standby-dialog

http://xpagesera.blogspot.com/2012/05/add-ajax-loading-control-in-xpages-for.html

http://lotusnotus.com/lotusnotus_en.nsf/dx/xpages-tip-a-modal-waiting-dialog-for-background-processes..htm

以下を試してみました。IBM Notes 9.0.1 のブラウザでは正常に動作していますが、XPiNC では動作しません。One UI V 2.1 を使用している場合、XPiNC または Web クライアントでは機能しません。

   <xp:this.resources>
        <xp:dojoModule name="extlib.dijit.ExtLib"></xp:dojoModule>
        <xp:dojoModule name="extlib.dijit.Loading"></xp:dojoModule>
   </xp:this.resources>

イベント ハンドラーでは、ページで次のイベントを使用して、部分的に更新しました。

   <xp:this.onStart><![CDATA[XSP.startAjaxLoading()]]></xp:this.onStart>
   <xp:this.onComplete><![CDATA[XSP.endAjaxLoading()]]></xp:this.onComplete>
   <xp:this.onError><![CDATA[XSP.endAjaxLoading()]]></xp:this.onError>

クライアントと One UI 2.1 の両方でこのコードを使用して、この機能を実現するにはどうすればよいですか。

私の最初の質問に対するあなたの回答に本当に感謝しており、同じことを期待しています.

カイザー・アッバス

4

2 に答える 2

1

最初のオプション (これにはブートストラップが必要な場合があるため、拡張ライブラリの OpenNTF バージョン) では、部分的な更新を自動的に乗っ取り、ローディング マスクを追加する自己完結型のカスタム コントロールです。以前のバージョンへのリンクをたどると、実装手順が示されます。

「これをカスタム コントロールに追加し、それを xpages に追加して、部分的な更新ごとにスタンバイ ダイアログを取得します」

2 番目の 2 つのリンクは、より手動のオプションです。、onStartonErrorおよびonCompleteは、EventHandler のプロパティです。EventHandler を含むコンポーネント (ボタン、編集ボックスなど) からはアクセスできません。ソースペインに移動し、EventHandler 自体をクリックする必要があります。これにより、EventHandler を含むコンポーネントではなく、EventHandlerのプロパティの [すべてのプロパティ] ボックスが表示されます。

于 2016-11-22T13:17:31.857 に答える
0

以下は、2 番目のリンクの XPage の例です。 部分的な更新のために XPages に AJAX の「Loading..」コントロールを追加します

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" style="margin:200px">
    <xp:this.resources>
        <xp:dojoModule name="extlib.dijit.Loading" />
    </xp:this.resources>
    <xp:button id="button1" value="Show time in 3 seconds">
        <xp:eventHandler
            event="onclick"
            submit="true"
            refreshMode="partial"
            refreshId="panel1">
            <xp:this.action><![CDATA[#{javascript:
                viewScope.clickTime = new Date();
                var waitUntil = viewScope.clickTime.getTime() + 3000; 
                while(waitUntil > new Date().getTime()) {
                    // wait 3 seconds
                }
            }]]></xp:this.action>
            <xp:this.onStart><![CDATA[XSP.startAjaxLoading()]]></xp:this.onStart>
            <xp:this.onComplete><![CDATA[XSP.endAjaxLoading()]]></xp:this.onComplete>
            <xp:this.onError><![CDATA[XSP.endAjaxLoading()]]></xp:this.onError>
        </xp:eventHandler>
    </xp:button>
    <xp:panel id="panel1">
        <xp:text
            escape="true"
            id="computedField1"
            value="#{viewScope.clickTime}"
            style="font-size:48pt">
            <xp:this.converter>
                <xp:convertDateTime type="both" />
            </xp:this.converter>
        </xp:text>
    </xp:panel>
</xp:view>

ボタンをクリックすると、「しばらくお待ちください...」と 3 秒間表示され、その後ボタンのクリック時刻が表示されます。

refreshMode="partial"ボタンの eventHandler と有効な refreshIdを設定してください。

于 2016-11-22T20:14:54.177 に答える