0

プログレス バーを使用して、データのインポートの進行状況を表示したいと考えています。ボタンを押すと、メソッドを呼び出してインポートを開始し、プログレスバーで進行状況を表示したいと思います。しかし、何らかの理由で、メソッドが終了するとバーが表示され、100% が表示されます。ページを更新して進行状況バーが消えません。

ここに私の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>

私のBeanには、ボタンを押すと呼び出されるメソッドがあり、そこでプログレスバーの現在の値を設定します。また、現在の値のセッターとゲッター:

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;
    }
4

2 に答える 2

2

これは、JSF が一度に 1 つの ajax リクエストしか処理できないためです。そのため、プログレス バーの ajax リクエストは、インポート ajax リクエストが完了した場合にのみ実行されます。

インポート要求がすぐに終了するように、スレッドを生成する必要があります

于 2012-09-17T10:22:56.870 に答える