java – Progressbar在primefaces中不起作用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Progressbar在primefaces中不起作用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3294字,纯文字阅读大概需要5分钟。
内容图文
![java – Progressbar在primefaces中不起作用](/upload/InfoBanner/zyjiaocheng/771/d6814c99432c4aadbc1d07eba2e1f6a9.jpg)
我有一个fileUpload按钮,当用户上传文件时,ManagedBean中的进程启动.这个过程可能非常慢,我需要向用户显示进度.所以我有以下代码:
<p:fileUpload id="commandButtonIniciarImportacao"
disabled="#{importacaoArMB.produtoSelecionado == null}"
fileUploadListener="#{importacaoArMB.uploadArquivoImportacao}"
mode="advanced" auto="true" cancelLabel="Cancelar"
update=":formManterArquivoImportacao:tabViewManterArquivoImportacao:dataTableArs,
:formManterArquivoImportacao:tabViewManterArquivoImportacao:dataTableArsIgnorados"
label="Iniciar Importa??o..."
onstart="pbImportacao.start()" />
<p:progressBar widgetVar="pbImportacao" ajax="true" value="#{importacaoArMB.progresso}"
labelTemplate="#{value}%">
</p:progressBar>
在我的managedBean中,我有一个getter和setter to progress属性,我正在做以下事情:
public void uploadArquivoImportacao(FileUploadEvent fileUploadedEvent) {
if (produtoSelecionado == null) {
addErrorMessage("Selecione o Produto antes de iniciar a importa??o");
FacesContext.getCurrentInstance().validationFailed();
return;
}
try {
addInfoMessage("Iniciando importa??o ...");
uploadedFile = fileUploadedEvent.getFile();
// Inicializando atributos do bean (ArquivoImportacao)
byte[] conteudoAsBytes = uploadedFile.getContents();
bean.setConteudo(new String(conteudoAsBytes));
bean.setDataHoraImportacao(new Date());
bean.setNome(uploadedFile.getFileName());
bean.setLayoutImportacao(produtoSelecionado.getLayoutImportacao());
arsIgnorados = getBoPadrao().gerarArsFromImportacao(bean, progresso);
addInfoMessage("Importa??o finalizada");
} catch (BOException bo) {
addErrorMessage(bo.getMessage());
FacesContext.getCurrentInstance().validationFailed();
} catch (Exception e) {
e.printStackTrace();
addErrorMessage(e.getMessage());
FacesContext.getCurrentInstance().validationFailed();
}
}
我将“progress”属性传递给我的BO(Bussiness Object),并且在FOR的每个迭代器中都会增加此属性的值.
问题是:progressBar没有任何反应,继续ZERO.
解决方法:
看看这个从你的代码构建的例子.
它只是一个演示,但它按照你想要的方式工作!希望您能够适应您的真实代码.
<h:form id="form1">
<p:growl id="growl" showDetail="true"/>
<p:fileUpload id="fileup1"
fileUploadListener="#{uploadBean.uploadArquivoImportacao}"
mode="advanced"
auto="true"
cancelLabel="Cancelar"
update="growl"
label="Iniciar Importa??o..."
onstart="pbImportacao.start()" />
<p:progressBar
id="progress1"
widgetVar="pbImportacao"
ajax="true"
value="#{uploadBean.progresso}"
labelTemplate="{value}%">
<p:ajax event="complete" listener="#{uploadBean.onComplete}" update="growl" />
</p:progressBar>
</h:form>
在UploadBean类中:
public void uploadArquivoImportacao(FileUploadEvent fileUploadedEvent) {
System.out.println("File uploaded...");
//collects information about uloaded file here...
//then do what you have to do (can take time)
doYourStuff();
}
public void doYourStuff() {
//fake job that takes 10 seconds (100 x 100 millis)
System.out.println("Job starts...");
for (int i = 0; i < 100; i++) {
setProgresso(i);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
}
setProgresso(0);
System.out.println("Job done.");
}
private long progresso = 0;
public long getProgresso() {
return progresso;
}
public void setProgresso(long progresso) {
this.progresso = progresso;
}
public void onComplete() {
System.out.println("oncomplete !");
}
备注
> ProgressBar更新2或3秒(不那么高的刷新率)
>未调用onComplete(我不明白为什么)
内容总结
以上是互联网集市为您收集整理的java – Progressbar在primefaces中不起作用全部内容,希望文章能够帮你解决java – Progressbar在primefaces中不起作用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。