Я пытаюсь загрузить файл при нажатии кнопки и присутствует в столбце сетки vaadin. Как я могу добиться этогоКак загрузить файл при нажатии кнопки в сетке vaadin
Button tempDownloadBtn = new Button();
tempDownloadBtn.setId("tempdownloadbtn");
Grid tableList = new Grid();
tableList.addColumn("title", String.class).setHeaderCaption("TITLE").setSortable(false);
tableList.addColumn("creationDate", String.class).setHeaderCaption("CREATION DATE").setSortable(false);
tableList.addColumn("status", String.class).setHeaderCaption("STATUS").setSortable(false).setWidth(120).setRenderer(new HtmlRenderer());
tableList.addColumn("description", String.class).setHeaderCaption("DESCRIPTION").setSortable(false);
tableList.addColumn("transactionType", String.class).setHeaderCaption("TRANSACTION TYPE").setSortable(false);
tableList.addColumn("batchId", String.class).setSortable(false).setHidden(true);
tableList.addColumn("action", String.class).setHeaderCaption("ACTION").setSortable(false).setRenderer(new ButtonRenderer(e -> {
Indexed indexed = tableList.getContainerDataSource();
String action = indexed.getContainerProperty(e.getItemId(), "action").getValue().toString();
if (action.equalsIgnoreCase("Download Passcode"))
{
String batchId = Encrypter.decodeString(indexed.getContainerProperty(e.getItemId(), "batchId").getValue().toString());
DownloadVoucherDetailsResponseM downloadFileResponseM = new CommonB().dowloadVoucherDetails(batchId);
if (downloadFileResponseM.getResponseCode().equals("0000"))
{
System.out.println("DOWNLOAD_FILE_PATH::: " + downloadFileResponseM.getFilePath());
File downloadFile = new File(downloadFileResponseM.getFilePath());
FileDownloader fileDownloader = new FileDownloader(new FileResource(downloadFile));
fileDownloader.extend(tempDownloadBtn);
Page.getCurrent().getJavaScript().execute("document.getElementById('tempdownloadbtn').click();");
}
}
}));
Я думаю, что нельзя использовать FileDownloader с Grid и ButtonRenderer, потому что у вас нет компонента Button для каждой строки под рукой. 1.) Попробуйте таблицу Vaadin, где вы можете сгенерировать кнопку для каждой строки и использовать FIleDownloader. Или 2.) Найдите другой способ загрузки при использовании Grid и нажмите обработчик событий ButtonRenderer. –
Вы нашли решение? Пожалуйста, поделитесь им. –
№ После многого поиска в google я не нашел решения для этого, тогда я решил переместиться на стол. –