2011-08-19 182 views
0

我有一個PRIMEFACES對話框,其中我使用onCloseUpdate屬性在對話框關閉時重新渲染對話框的所有內容。問題是,當我關閉對話框,並(快速)單擊以再次打開它時,我看到onCloseUpdate尚未完成重新呈現對話框的內容,並且舊內容以半秒/秒的週期顯示。等待Ajax渲染(JSF)

這裏的命令鏈接,使對話框中可見:

<h:commandLink id="area1" onclick="dlg.show()"> 
... 
</h:commandLink> 

,和這裏的對話框:

<ppctu:dialog onCloseUpdate="... here is all the component ids from the dialog content   ..." modal="true" widgetVar="dlg"> 

是否有某種方式來等待onCloseUpdate渲染來完成?

在此先感謝

回答

0

使用同步AJAX call.Synchronous AJAX(真SJAX - 同步JavaScript和XML)是模式,這意味着,直到結果已經從服務器獲取的JavaScript將停止處理程序。處理請求時,瀏覽器被有效凍結。

function getFile(url) { 
    if (window.XMLHttpRequest) {    
    AJAX=new XMLHttpRequest();    
    } else {         
    AJAX=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    if (AJAX) { 
    AJAX.open("GET", url, false); //notice the 'false' attribute       
    AJAX.send(null); 
    return AJAX.responseText;           
    } else { 
    return false; 
    }            
} 

如果您正在使用jQuery然後把async:false在你的Ajax調用 VAR fileFromServer =的GetFile( 'http://somedomain.com/somefile.txt');