【问题标题】:how to call action method of the command button after onclick() finishes successfully?onclick() 成功完成后如何调用命令按钮的操作方法?
【发布时间】:2012-09-23 05:01:22
【问题描述】:

我的目标是,当我们按下命令按钮时,它需要执行onclick 方法,该方法调用另一个单击按钮来上传文件。上传文件完成后,需要执行action方法。但目前,虽然它正在调用该函数,但它正在异步执行 action 方法,甚至在文件上传完成之前完成。我们怎样才能让它同步,只有当onclick方法完成时,它才需要执行action方法?

<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();
}

【问题讨论】:

    标签: jsf jsf-2 primefaces


    【解决方案1】:

    尝试类似下面代码的回调函数 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();
    });
    
    }
    

    【讨论】:

    • $('button.start[type=button]').click() 实际上会触发上传。该组件来自 primefaces。
    猜你喜欢
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-16
    相关资源
    最近更新 更多