Java JSF进度条未更新

Java JSF进度条未更新,java,jsf,jsf-2,richfaces,progress-bar,Java,Jsf,Jsf 2,Richfaces,Progress Bar,我是JSF新手,所以我需要有人能帮助我。我试图在一个页面中实现一个进度条,所以我遵循了;这很清楚,但我的问题是“value”属性的值不是在bean(CLASS_A)中计算的,而是在从bean调用的util类(CLASS_B)中计算的。在这种情况下,我在类_a中创建了一个“completedpercentage”变量,并从类_B中对其进行了更新,因此我可以在xhtml页面中使用它,但没有得到更新;我还尝试创建ProgressBarBean类(使用@ManagedBean和@SessionScope

我是JSF新手,所以我需要有人能帮助我。我试图在一个页面中实现一个进度条,所以我遵循了;这很清楚,但我的问题是“value”属性的值不是在bean(CLASS_A)中计算的,而是在从bean调用的util类(CLASS_B)中计算的。在这种情况下,我在类_a中创建了一个“completedpercentage”变量,并从类_B中对其进行了更新,因此我可以在xhtml页面中使用它,但没有得到更新;我还尝试创建ProgressBarBean类(使用@ManagedBean和@SessionScoped)并调用该方法来计算类_B的进度,但我不知道为什么我总是将ProgressBarBean设置为null(我正在使用@ManagedProperty注入它)。有人能帮我吗?举个例子或者告诉我我做错了什么?提前谢谢。

一些代码:
这是视图中的进度条:

<rich:progressBar value="#{progressBar.accomplishedPercentage}"
  interval="2000" label="#{progressBar.accomplishedPercentage} %"
  enabled="#{oaBean.showProgressBar}" minValue="-1" maxValue="100"
  reRenderAfterComplete="createFormPanel">
</rich:progressBar>

然后通过
@ManagedProperty(value=“#{progressBar}”)将进度条注入类_B中
私人ProgressBarBean progressBar
并调用方法
incrementCompletedPercentage
,但正如我所说,我得到的
progressBar
是一个空值


编辑1
现在我收到了ProgressBarBean的一个实例,但问题是UI中的进度条的值从未更新:方法
getCompletedPercentage
仅在加载页面时调用(因此始终为0),而不是在每2秒处理期间调用。
我认为进度条本身与启动它的按钮无关。以下是进度条的完整定义:

<p:dialog modal="true" widgetVar="statusDialog" header="Status"
draggable="false" closable="false" resizable="false">
<rich:progressBar value="#{oaBean.accomplishedPercentage}"
    interval="1000" label="#{oaBean.accomplishedPercentage} %"
    enabled="#{oaBean.showProgressBar}" minValue="-1" maxValue="100"
    reRenderAfterComplete="createFormPanel">
</rich:progressBar>
</p:dialog>


这是命令按钮的定义:

<p:commandButton id="generate" value="Generate" 
  oncomplete="generateDialogDocumento.hide() onclick="PrimeFaces.monitorDownload(start, stop)"
  icon="ui-icon-arrowthichk-s" ajax="false">
    <p:fileDownload value="#{oaBean.file}" />
</p:commandButton>

CLASS_B的作用域是什么?
Hi@dratewka,实际上它没有指定作用域,只是一个用作实用程序的简单类。如果它不是托管bean,那么注入(
@ManagedProperty
)不起作用-因此空的
progressBar
值。将其更改为托管bean并查看它是否有帮助Hanks@dratewka,我正在使用
@Scope
@Named
创建bean,并使用
@Autowired
注入依赖项(不使用ManagedBean或ManagedProperty),因此现在我收到了ProgressBarBean的正确实例,但更新后的值没有反映在UI中。我尝试访问类B(#{classb.progressBar.CompleteShedPercentage})中的ProgressBarBean,并在类B中创建一个新变量“CompleteShedPercentage”,然后从UI调用它(#{classb.CompleteShedPercentage}),但仍然看不到更新后的值。任何提示?两个问题:1)是否每隔2秒调用
getCompletedPercentage
(在其中放置断点)?2) 进度条是否在
h:form
中?
<p:commandButton id="generate" value="Generate" 
  oncomplete="generateDialogDocumento.hide() onclick="PrimeFaces.monitorDownload(start, stop)"
  icon="ui-icon-arrowthichk-s" ajax="false">
    <p:fileDownload value="#{oaBean.file}" />
</p:commandButton>
<p:commandButton id="generate" value="Generate" 
oncomplete="generateDialogDocumento.hide()" onclick="PrimeFaces.monitorDownload(start, stop); statusDialog.show();"
icon="ui-icon-arrowthichk-s" ajax="false">
<p:dialog modal="false" widgetVar="statusDialog" header="Status"
    draggable="false" closable="false" resizable="false">
    <p:growl id="growl" />
    <p:progressBar widgetVar="pbAjax" ajax="true" value="#{progressBar.accomplishedPercentage}" labelTemplate="#{progressBar.accomplishedPercentage}%" >  
        <p:ajax event="complete" listener="#{progressBar.onComplete}" update="growl" oncomplete="statusDialog.hide()"/>  
</p:progressBar> 
</p:dialog>
<p:fileDownload value="#{oaBean.file}" />