使用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秒询问服务器是否有任何更改
也有一些,但我发现我们正在旋转线程的大多数地方,我们希望显示“加载”动画,因此进度指示器工作正常。非常感谢您的回答!希望它对其他人也有用。