2012-08-01 164 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请求。

您必须产生一个线程,以便导入请求立即完成

相关问题