次のシナリオがあります(簡略化):
docsMBマネージドBeanの関数:
public void saveAdvance() {
// by default, finalized is false
finalized = getFinalizedByBySlowFunction();
}
私のxhtmlのボタン:
<a4j:commandButton value="SAVE"
action="#{docsMB.saveAdvance}"
oncomplete="verifyDocs();"/>
そして私のverifyDocsは同じxhtmlで機能します:
<script type="text/javascript">
var verifyDocs = function(){
//alert(1);
if( #{docsMB.finalized == true} ){
#{rich:component('mpConfirmar')}.show();
}
}
</script>
これは私を問題にします。アプリを実行すると、「finalized」は常にfalseになりますが、verifyDocs関数でアラートのコメントを解除すると、機能することに気付きました。アラートは、saveAdvanceがそれ自体をファイナライズするための「必要な」時間を与えると思います。
アクションが完了した後にoncompleteメソッドが実行されるようにするにはどうすればよいですか?
それとも私は他の場所で間違いをしていますか?
どうもありがとう
[編集]
ページ全体を更新すると、正しい「最終的な」値が得られます...