vaadin - 使用 Vaadin 完全导出 CSV 文件后显示通知

标签 vaadin export-to-csv

我有以下代码:

Button export = new Button("CSV");
export.addListener(new ClickListener() 
{
    public void buttonClick(ClickEvent event) 
    {
        CsvExport csvExport;
        csvExport = new CsvExport(_table);
        csvExport.setDisplayTotals(false);
        csvExport.setDoubleDataFormat("0");
        csvExport.excludeCollapsedColumns();
        csvExport.setReportTitle("Document title");
        csvExport.setExportFileName("Nome_file_example.csv");
        csvExport.export();

        getWindow().showNotification("Document saved", "The document has been exported.");
    }
}

我希望通知仅在文件导出和下载后出现,但实际上通知不起作用,可能是因为它没有“等待”语句

csvExport.export();

完成。如果我评论它,通知会起作用。

有人有什么建议吗?

非常感谢,

最佳答案

您需要将工作拆分到一个单独的线程中,然后提供一种“稍后”通知用户的方法。

所以,首先,创建一个线程...如果你在 Java EE 上,使用内置的线程池,否则使用其他东西(我们在 tomcat 上,我们自己推出,以便我们更好地控制).

然后,当您完成后,同步您的线程,回到您的 UI 类(我们使用 Groovy 中的闭包,但您可以创建自己的监听器),并调用该方法来通知您的用户。 window.showNotification('全部完成')

所以这是棘手的部分,您已经通知了您的用户,但是 Vaadin 已经发回了“点击”响应...所以服务器部分认为它已通知用户,但它无法向用户显示然而......你需要一个progress indicator在您的页面上,因为它每 5 秒询问一次服务器是否有任何更改。

还有一些'push' plugins ,但我发现在我们启动线程的大多数地方,我们都希望显示“加载”动画,因此进度指示器运行良好。

关于vaadin - 使用 Vaadin 完全导出 CSV 文件后显示通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13531696/

相关文章:

java - 这个警告在 Vaadin : "Ignoring RPC call for disabled connector com.vaadin.ui.Window"? 中意味着什么

java - FileWriter 创建 csv 时在单个单元格中写入 html

Python 按顺序将 2 个列表和 Pandas DataFrame 写入 csv/excel

c# - 创建文本文件,将它们压缩到 ZipArchive 中并提供以供下载

jasper-reports - 在 Jasper Reports 中导出 CSV 时,从表组件中排除列标题(但保留在前面)

eclipse - Tomcat 服务器类型在 Fedora 15 Eclipse 包中不可用

java - Vaadin 操作一些小部件的几个基本问​​题

vaadin - 表字段中未显示验证图标

java - Vaadin 8 历史 API 和 SEO

python-3.x - 如何使用 pandas 获取某种格式的表格并导出为 csv?