java - <丰富:progressbar> Progress bar is shown only when method is finished

标签 java jsp jsf richfaces

我想用进度条来显示导入数据的进度。因此,当我按下按钮时,我会调用该方法来开始导入,并希望用进度条显示进度。 但由于某种原因,该方法完成后会显示条形图并显示 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 中,我有一个方法,当我按下按钮时会调用该方法,并在那里设置进度条的当前值。还有当前值的 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;
    }

最佳答案

这是因为 JSF 一次只能处理一个 ajax 请求。所以进度条的ajax请求只有在导入ajax请求完成后才会执行。

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

关于java - <丰富:progressbar> Progress bar is shown only when method is finished,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11754585/

相关文章:

java - LoaderManager LoaderCallback 对象

javascript - 将 ' 和 ( 字符替换为 JS 中的特殊字符

java - 如何从servlet重定向到jsp页面

jquery - 在liferay portlet中使用jquery post

jsf - Javascript 中的 Intellij EL 表达式验证问题

jsf - Wildfly 以错误开始。 javax.faces.FacesException : Unable to find CDI BeanManager

java - Gradle - 权限被拒绝 : connect

java - 如何为线程池服务器预分配对象?

javascript - jQuery Highcharts 不适用于 JSF 2.0

java - java中仅支持IPv6的套接字