Home   Single Page

イベントのエコー

org.zkoss.zk.ui.event.Events クラスの echoEvent メソッドを使用することで、アプリケーションはクライアントにイベントの処理が終了後にエコーバックするように依頼出来ます。
このメソッドはクライアントにイベントのエコーバックをする依頼をするリクエストをキューイングした後、すぐにりたーんします。

送信イベントやポストイベントと違って、このイベントは現在の実行中では処理されないことに注目してください。むしろ、クライアントがエコーバックした後に処理されます。別の言葉で言えば、クライアントがユーザーインターフェースを更新した後に処理されます。このように、ユーザーが長時間の操作を開始する前にプロンプトメッセージを出しておくことも有効です。

例えば、クライアントがハイライトウィドウを表示後に長時間操作のオペレーションを開始するように、ハイライトウィンドウをオープン後にエコーイベントを起動します。(そしてイベントをエコーバックします)

例えば、 org.zkoss.zk.ui.util.Clients.showBusy メソッドを使って、ビジーメッセージを表示し、ユーザーがシステムビジーであることを知ることが出来ます。
そうして、この例では、エンドユーザーは最初に "Execute..."を見て、その 2 秒後 "Done."を見ます。もし、 postEvent メソッドを使用しているならば、エンドユーザーは 2 秒後 に "Execute..." と "Done."を同時に見ます。

<window id="w" title="Test echoEvent">
    <attribute name="onLater">    
    Thread.sleep(2000);    
    Clients.showBusy(null, false);    
    new Label("Done.").setParent(w);    
    </attribute>    

    <button label="echo">    
    <attribute name="onClick">    
    Clients.showBusy("Execute...", true);    
    Events.echoEvent("onLater", w, null);    
    </attribute>    
    </button>    
</window>