java - Vaadin 文件下载器 : start download manually

标签 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 (...) {
        ...
    } 
});

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

最佳答案

您可以尝试两种方法

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

在 Vaadin 8.4+ 中,您还可以通过扩展 EventTrigger 来设置 FileDownloader(请参阅拉取请求 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如果第一种方法不适合您,这可能会被利用。

关于java - Vaadin 文件下载器 : start download manually,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50528692/

相关文章:

java - StringBuilder 检查字母值

java - Android 应用程序小部件提供程序 : dynamic width

java - 将 List<Enum> 绑定(bind)到 vaadin 中的 CheckBoxGroup

java - 以编程方式打开 popupdatefiled 日历

java - 使用java优化下载速度

java - Spring Boot 应用程序无法 Autowiring XML 配置

java - Jpa Repository save() 不更新现有数据

eclipse - 您的gradle版本太旧

java - 如何合并 Vaadin 网格中的单元格

java - 在 Vaadin Combobox 中引用数据?