我的进度条没有更新,为什么?
控制器方法被按其应有的方式调用,并且进程变量被正确递增:
XHTML
<p:dialog>
<h:outputLabel value="Count:" for="batchCount"/>
<p:inputText id="batchCount" required="true"
value="#{batchModel.count}">
</p:inputText>
<p:commandButton id="generateBatchButton" value="GO"
actionListener="#{batchController.sendBatch()}"
onclick="PF('progressVar').start();"
oncomplete="PF('dialogBatchParams').hide();"/>
<p:progressBar id="progressBar"
widgetVar="progressVar"
value="#{batchModel.progress}"
labelTemplate="{value}%">
</p:progressBar>
</p:dialog>
控制器方法
public void sendBatch() {
for (int i = 0; i < batch.size(); i++) {
batchModel.setProgress(Math.round(100 * (float) i / (float) batch.size()));
// Do stuff here
}
}
MODEL
@Named
@ViewScoped // or @SessionScoped
public class BatchModel implements Serializable {
private static final long serialVersionUID = 1L;
private int count = 100;
private int progress;
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public int getProgress() {
return progress;
}
public void setProgress(int progress) {
this.progress = progress;
}
}
我的进度已正确更新,记录时得到以下输出:
2016-10-19 10:08:49,707 INFO controller.BatchController -> Sending batch
0
10
20
30
40
50
60
70
80
90
2016-10-19 10:08:57,432 INFO controller.BatchController -> Done sending batch
我正在使用 PF 6。我尝试过使用和不使用“update”标签,并且使用了 ajax 标签,但没有骰子。
你的问题开始于RequestScoped
豆。这些是每个请求创建的。由于栏的更新需要请求,因此您将获得一个新的 bean,其进度设置为0
again.
最好使用ViewScoped
在你的bean(和控制器)上。
还有,你缺的是ajax="true"
在你的进度条中(它希望你在客户端进行更新)。你应该将其更改为:
<p:progressBar id="progressBar"
ajax="true"
widgetVar="progressVar"
value="#{batchModel.progress}"
labelTemplate="{value}%"/>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)