提问人:Matheus Daguetti 提问时间:5/5/2023 最后编辑:Jasper de VriesMatheus Daguetti 更新时间:5/5/2023 访问量:46
“循序渐进”的进展 Java/PrimeFaces
"Step by step" progress Java/PrimeFaces
问:
我需要帮助,因为我找不到这样的东西(或者我不知道如何正确搜索)。
我调用了这个执行多个任务的方法。我需要的是在每个任务结束时在屏幕上显示一条消息,而无需结束方法或让用户再次单击按钮。
这是我的方法:
public void trataDados() {
String procedure = "";
// task 1
try {
procedure = "trata_dados_previsao_viagem";
StoredProcedureQuery queryTDPV = previsaoCrud.getEntityManager().createNamedStoredProcedureQuery(procedure);
queryTDPV.setParameter("numTipoProduto", numTipoProduto);
queryTDPV.setParameter("codCicloFatProduto", codCicloFatProduto);
queryTDPV.setParameter("dt_inicio", this.dtInicial);
queryTDPV.execute();
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Aviso!", "Tratamento de Dados das Viagens Concluído com Sucesso!"));
} catch (Exception ex) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERRO!", "Erro ao executar processo " + procedure + ", por gentileza, informe a T.I." + ex.getMessage()));
}
// task 2
EntityManager em = usuService.crud().getEntityManager();
String query = "select row_number() over() as id, " +
"cliente, " +
"area_nome, " +
"placa_fixa, " +
"placa_mercosul, " +
"placa_viagem, " +
"viag_status " +
"from java.vie_analise_placas_fixas_viagem_mercosul";
listPrvTrataDadosPl = em.createNativeQuery(query, "PrevTrataDadosPlacaMapping").getResultList();
int registros = listPrvTrataDadosPl.size();
if (registros > 0) {
int i = 0;
for (i = 0; i < registros; i++) {
PrevTrataDadosPlaca placa = new PrevTrataDadosPlaca();
placa.setCliente(listPrvTrataDadosPl.get(i).getCliente());
placa.setPlaca_fixa(listPrvTrataDadosPl.get(i).getPlaca_fixa());
placa.setPlaca_mercosul(listPrvTrataDadosPl.get(i).getPlaca_mercosul());
int id = placa.getCliente();
String fixa = placa.getPlaca_fixa();
String mercosul = placa.getPlaca_mercosul();
try {
procedure = "transforma_placa";
StoredProcedureQuery queryTP = previsaoCrud.getEntityManager().createNamedStoredProcedureQuery(procedure);
queryTP.setParameter("mercosul", mercosul);
queryTP.setParameter("id", id);
queryTP.setParameter("fixa", fixa);
queryTP.execute();
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Aviso!", "Correção de Placas Concluído com Sucesso!"));
} catch (Exception ex) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERRO!", "Erro ao executar processo " + procedure + ", por gentileza, informe a T.I." + ex.getMessage()));
}
}
}
// task 3
try {
procedure = "trata_dados_previsao_checklist";
StoredProcedureQuery queryTDPC = previsaoCrud.getEntityManager().createNamedStoredProcedureQuery(procedure);
queryTDPC.setParameter("numTipoProduto", numTipoProduto);
queryTDPC.setParameter("codCicloFatProduto", codCicloFatProduto);
queryTDPC.setParameter("dt_inicio", this.dtInicial);
queryTDPC.execute();
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Aviso!", "Tratamento de Dados dos Checklists Concluído com Sucesso!"));
} catch (Exception ex) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERRO!", "Erro ao executar processo " + procedure + ", por gentileza, informe a T.I." + ex.getMessage()));
}
}
再来一次。。。我需要在任务结束后但在方法结束之前显示“FacesMessage”,例如:
[ 0% ]
启动任务
--
[ 2% ]
启动任务
运行第 1 部分
--
[ 50% ]
启动任务
运行第 1 部分
运行第 2 部分
--
等。
不一定需要使用 ProgressBar 和 percentage,而是像这样的东西,显示 Method 正在处理的内容的“一步一步”。
我在 Eclipse Neon 3 和 PrimeFaces 6.1 上使用 Java(EE) jdk1.8.0_211(这是一个旧项目)。
我尝试使用 Ajax ProgressBar,但在方法完全完成之前它不会停止。
答: 暂无答案
评论