Java Vaadin文件下载程序:手动启动下载

Java Vaadin文件下载程序:手动启动下载,java,vaadin,Java,Vaadin,我正在建设一个项目,从不同的网址下载几个PDF文件,合并成一个单一的,并下载它们 我正在尝试使用Vaadin的FileDownloader来实现这一点: final FileDownloader fileDownloader = new FileDownloader(new FileResource(resultResource.getFile())); fileDownloader.extend(download); resultResource是我要下载的生成的PDF 现在的问题是生成PD

我正在建设一个项目,从不同的网址下载几个PDF文件,合并成一个单一的,并下载它们

我正在尝试使用Vaadin的FileDownloader来实现这一点:

final FileDownloader fileDownloader = new FileDownloader(new FileResource(resultResource.getFile()));
fileDownloader.extend(download);
resultResource是我要下载的生成的PDF

现在的问题是生成PDF需要很短的时间,因此,有时下载发生在生成新文件之前,导致下载旧文件或空文件

所以我一直想做的是这样的:

download.addClickListener(e -> {
    try {
        // This creates the new PDF 
        pdfConverter.manipulatePdf(storeNumber.getValue());

        fileDownloader.download();

    } catch (...) {
        ...
    } 
});

但到目前为止没有任何成功。有什么办法可以做到这一点吗?要禁用自动下载并手动触发它,您可以尝试两种方法

第一种方法是重构UI,以便在进入视图时开始生成PDF文件,完成后启用下载按钮。如果可行,您可以使用其他指标,如进度条


在Vaadin 8.4+中,您还可以通过扩展EventTrigger see pull request和API spec来设置FileDownloader,如果第一种方法不适用于您,则可以利用这些方法。

谢谢您的回答。第一种方法是绝对可能的,因此我认为这将解决我的问题。不过,我要看一看EventTrigger,因为我认为这对UX来说会更好一些。