Session 会话范围中的进度条最初显示上次进度

Session 会话范围中的进度条最初显示上次进度,session,primefaces,progress-bar,Session,Primefaces,Progress Bar,在我的facelet中,我正在使用progressbar。现在progressbar的进度来自一个Holder类,它位于SessionScope中,我的支持bean位于RequestScope中。一旦进度达到100%并且我的活动完成,我所做的就是将进度设置为0。现在再次在同一页面中单击导出按钮时,进度将首先显示为100%,然后下降到0,然后显示实际进度 我的问题是,当我将进度设置为0时,为什么第二次最初它显示100作为值?任何帮助 代码是: <p:commandLink id="excel

在我的facelet中,我正在使用progressbar。现在progressbar的进度来自一个Holder类,它位于SessionScope中,我的支持bean位于RequestScope中。一旦进度达到100%并且我的活动完成,我所做的就是将进度设置为0。现在再次在同一页面中单击导出按钮时,进度将首先显示为100%,然后下降到0,然后显示实际进度

我的问题是,当我将进度设置为0时,为什么第二次最初它显示100作为值?任何帮助

代码是:

<p:commandLink id="excelExport"
                        actionListener="#{studentDetailsBean.export}" ajax="false"
                        onclick="progressDisplay.show();">
                        <p:graphicImage library="img" name="excel.png" width="20" />
                    </p:commandLink>
                    <p:tooltip for="excelExport" value="Export to Excel"
                        showEffect="fade" hideEffect="fade" />

                    <p:dialog id="progress_dialog" dynamic="true"
                        onShow="pbAjax.start();pbAjax.setValue(0);" width="300" position="center"
                        widgetVar="progressDisplay" resizable="false" draggable="false"
                        modal="true" showHeader="false">

                        <p:progressBar id="progressBar" widgetVar="pbAjax" ajax="true"
                            value="#{studentDetailsBean.progressBarHolder.progress}"
                            labelTemplate="Exporting..." style="margin-bottom:0;"
                            interval="2000">
                            <p:ajax event="complete"
                                listener="#{studentDetailsBean.onProgressComplete}"
                                oncomplete="pbAjax.cancel();progressDisplay.hide()" />
                        </p:progressBar>
                    </p:dialog>

渲染后,进度条依赖于javascript对象,该对象会反复检查模型是否有修改

当它达到100%时,javascript对象停止检查managedbean并保留它以前的状态

当您启动另一个进程时,组件将保持100%运行,直到它执行第一次进度检查

要保证javascript对象(可通过widgetVar访问)将从0开始,您需要执行以下操作:

XHTML

<p:progressBar widgetVar="pbAjax" ajax="true" value="#{progressBean.progress}" labelTemplate="{value}%" styleClass="animated">  
        <p:ajax event="complete" listener="#{progressBean.onComplete}" update="growl" oncomplete="startButton2.enable()"/>  
</p:progressBar>

<p:commandButton value="Start" type="button" onclick="pbAjax.setValue(0); PF('pbAjax').start(); PF('startButton2').disable();" widgetVar="startButton2" />  

注意
pbAjax.setValue(0)