gpt4 book ai didi

jsf - Primefaces 进度条没有更新?

转载 作者:行者123 更新时间:2023-12-05 03:10:26 27 4
gpt4 key购买 nike

我的进度条没有更新,为什么? Controller 方法按应有的方式调用,并且 progess 变量正确递增:

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>

Controller 方法

public void sendBatch() {       
for (int i = 0; i < batch.size(); i++) {
batchModel.setProgress(Math.round(100 * (float) i / (float) batch.size()));
// Do stuff here
}
}

型号

@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 的新 bean。
最好在您的 bean(和 Controller )上使用 ViewScoped

此外,您的进度条中缺少 ajax="true"(它希望您在客户端进行更新)。您应该将其更改为:

<p:progressBar id="progressBar"
ajax="true"
widgetVar="progressVar"
value="#{batchModel.progress}"
labelTemplate="{value}%"/>

关于jsf - Primefaces 进度条没有更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39992423/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com