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