1

私の目標は、コマンド ボタンを押したときに、onclickファイルをアップロードするための別のクリック ボタンを呼び出すメソッドを実行する必要があることです。ファイルのアップロードが完了したら、アクション メソッドを実行する必要があります。しかし、現在、関数を呼び出していますが、アクション メソッドを非同期で実行しており、ファイルのアップロードが完了する前に完了します。onclickメソッドが終了したときにのみアクション メソッドを実行する必要があるように、同期させるにはどうすればよいでしょうか。

<p:commandButton styleClass="shareButton" ajax="true"
                 action="#{topicController.createTopic}"
                 onclick='javascript:setTopicDetails();uploadFile();'
                 value="Share"
                 oncomplete="javascript:complTopic(xhr, status,args);"
                 partialSubmit="true">
</p:commandButton>

function uploadFile(){
    $('.progress').show();
    $('button.start[type=button]').click();
}
4

1 に答える 1

0

以下のコードe.preventDefault();のようなコールバック関数を試してください。//デフォルトのクリックアクションを防止し、アップロードが完了すると手動でクリックイベントをトリガーします。

function uploadFile(){
e.preventDefault(); 
$('#upload').load('ajax/test.html', function() {
  alert('upLoad completed.');

//call functions which need to be called after upload completed..
setTopicDetail();
 $('.progress').show();
    $('button.start[type=button]').click();

// click commandlink here.
$('commandlink').click();
});

}
于 2012-09-23T07:21:49.303 に答える