我有Vaadin 8确认代码,该代码执行长时间的任务。我想关闭对话框并显示进度条:-
ConfirmDialog.show(UI.getCurrent(), "Dynamic Report warning caption",
"More than " +rows+ " rows in this table. It will take long time to generate this report.\nDo you still want to continue? ",
SalkkuTM.getI18N("PortfolioManagementMenuBar.deleteData.confirmDialog.yes.caption"),
SalkkuTM.getI18N("PortfolioManagementMenuBar.deleteData.confirmDialog.no.caption"), new ConfirmDialog.Listener() {
public void onClose(ConfirmDialog dialog) {
ProgressBar bar = new ProgressBar();
bar.setIndeterminate(true);
if (dialog.isConfirmed()) {
layout.addComponent(bar);
// this method does a long lasting task.
dynamicReportParameterGenerator();
bar.setVisible(false);
}
}
});
我想在用户选择“是”后立即关闭此对话框。我想展示一个不确定的进度栏。我无法处理。怎么做?请让我知道我该怎么做?
答案 0 :(得分:2)
这是常见问题解答,您需要使用Server Push并在后台线程中更新进度栏。这里有一篇博客文章和有关它的视频
https://vaadin.com/blog/community-answer-processing-a-file-in-a-background-thread
这里也对该主题进行了很好的讨论
Update Vaadin Progressbar with push asynchronously
我想显示一个不确定的进度栏。
这意味着您可以简化一些事情。如果您不想在操作过程中更新进度条,只需将进度条置于不确定模式下的UI中,完成后就再次更新UI。