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

使用Vaadin完全导出CSV文件后显示通知,vaadin,export-to-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

我有以下代码:

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();
结束。如果我对此发表评论,通知就起作用了

有人有什么建议吗


非常感谢,

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

所以,首先,创建一个线程。。。如果您使用的是JavaEE,请使用内置的线程池,否则请使用其他工具(我们使用的是tomcat,我们自己使用,以便更好地控制)

然后,完成后,同步线程,返回UI类(我们使用Groovy中的闭包,但您可以创建自己的侦听器),并调用该方法通知用户<代码>窗口。显示通知(“全部完成”)

所以这里有一个棘手的部分,你已经通知了你的用户,但是Vaadin已经将“点击”响应发回了。。。所以服务器部分认为它已经通知了用户,但是它还不能显示用户。。。您需要在页面上添加一个,因为它每5秒询问服务器是否有任何更改


也有一些,但我发现我们正在旋转线程的大多数地方,我们希望显示“加载”动画,因此进度指示器工作正常。

非常感谢您的回答!希望它对其他人也有用。