Vaadin FileDownloader:手动开始下载

时间:2018-05-25 11:57:36

标签: java vaadin

我正在构建一个项目,从不同的URL下载多个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 (...) {
        ...
    } 
});

但到目前为止没有任何成功。有什么办法可以这样吗?要禁用“自动”下载并手动触发它?

1 个答案:

答案 0 :(得分:1)

您可以尝试两种方法

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

在Vaadin 8.4+中,您还可以通过扩展EventTrigger(请参阅拉取请求https://github.com/vaadin/framework/pull/10478)和API规范https://vaadin.com/download/release/8.4/8.4.2/docs/api/com/vaadin/server/EventTrigger.html来设置FileDownloader。如果第一种方式不适合您,可能会被利用。