Vaadin FileDownloader: начать загрузку вручную - PullRequest
0 голосов
/ 25 мая 2018

Я создаю проект, который загружает несколько файлов PDF с разных URL-адресов, объединяет их в один и загружает его.

Я пытаюсь использовать FileDownloader Vaadin для достижения этой цели:

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 голосов
/ 25 мая 2018

Существует два подхода, которые вы можете попробовать

* 1002. * Первый подход заключается в рефакторинге вашего пользовательского интерфейса, так что PDF-файл начинает создаваться при входе в представление, и после его завершения вы активируете кнопку загрузки.Вы можете использовать другие индикаторы, такие как индикатор выполнения, если это возможно.

В Vaadin 8.4+ вы также можете настроить FileDownloader, расширив 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 Это может быть чем-то, что можно использовать, если первый способнеприменимо для вас.

...