2012-08-01 158 views
0

我想使用進度條顯示導入數據的進度。所以當我按下一個按鈕時,我調用該方法來開始導入,並希望通過進度條顯示進度。 但由於某種原因,該方法結束並顯示100%時會顯示該條。當我刷新頁面進度條不會消失。<rich:progressbar>僅當方法完成時才顯示進度條

這裏是我的JSP:

<h:panelGrid styleClass="footBtnBar" columns="2" 
        cellpadding="0" cellspacing="0"> 
      <h:panelGroup style="float:left"> 
       <rich:progressBar mode="ajax" value="#{excelImportController.currentValue}" interval="1000" id="pb" 
            enabled="#{excelImportController.pgEnabled}" minValue="0" maxValue="100" 
            reRenderAfterComplete="progressPanel"> 

        <h:outputText value="#{excelImportController.currentValue} %" /> 
       </rich:progressBar> 

      </h:panelGroup> 
      <h:panelGroup style="float:right"> 
       <a4j:commandLink action="#{excelImportController.startImport}" reRender="pb" 
           styleClass="buttonOra120"> 
        <h:outputText value="#{bundleDataImport['Label.import.data']}" /> 
       </a4j:commandLink> 
      </h:panelGroup> 
     </h:panelGrid> 

在我的豆我有,當我按下按鈕被稱爲有我設置進度條的當前值的方法。另外setter和getter爲當前值:

public class ExcelImportController { 
    private int currentValue; 
    private boolean pgEnabled = false; 

    public String startImport() { 
     // in this method I set the current value 
     // and pgEnabled=true 
    } 

    public int getCurrentValue() { 
     return (currentValue * 100)/numberOfSheets; 
    } 

    public void setCurrentValue(int currentValue) { 
     this.currentValue = currentValue; 
    } 
+0

不確定,但它可能應該在rich:panel? – medopal 2012-08-01 08:02:04

+0

對不起,沒有豐富的內部工作:面板,相同的行爲 – Qowaz 2012-08-02 13:58:53

回答

2

這是因爲JSF一次只能處理一個ajax請求。所以只有在導入ajax請求完成後纔會執行進度條的ajax請求。

您必須產生一個線程,以便導入請求立即完成

相關問題