1

完了時にサーバー側またはクライアント側のイベントハンドラーを起動するにはどうすればよいh:commondButton actionですか?このサーバー側のプロセスは、完了するまでに時間がかかります。ボタンをクリックすると、作業が終了してUIが更新されるまでに少し時間がかかります。UIが更新されたら、何かを起動したい。私はJSFを初めて使用します。これを手伝ってください。

ありがとう!

4

1 に答える 1

2

Icefacesには、クライアント側でイベントをキューに入れることができるjavascriptライブラリがあります。Icefacesは、アクションの完了後にDOMを更新するため、アクションメソッドの最後でイベントをキューに入れることができます。

これは私がIcefaces1.8.xと2.0で使用したものです。Icefaces 3に、DOM更新イベントをキャプチャするための特別なコンポーネント/コードが追加されているかどうかはよくわかりません。

xhtml

<script>
function toggleDisplay(id,style)
{
  document.getElementById(id).style.display = style;  
}
</script>
    <div id="msgDiv" style="display:none">Processing ..</div>
    <h:commandButton action="#{mybean.doUpdate}"
          onclick="toggleDisplay('msgDiv','visible')"/>

マネージドBean

    public class MyBean{
    ....
    doUpdate(ActionEvent e){
    //do stuff
     JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(),
        "toggleDisplay('msgDiv','none');")
    }
}

また、h:commandButtonでf:ajaxを使用し、ajax呼び出し中にメッセージを再レンダリングすることで、これを非常に簡単に行うことができます。

http://www.mkyong.com/jsf2/jsf-2-0-ajax-hello-world-example/

于 2013-03-14T05:46:20.373 に答える