Я играю с Ваадином и пытаюсь понять, как сделать последовательный способ загрузки нескольких файлов. До сих пор я создал сетку с небольшим классом CorrespondenceFiles
, который создает схемы получения и установки, которые обеспечивают структуру для сетки.
Однако я не уверен, как создать загрузчик для нескольких файлов и что бы лучшее решение этой проблемы. По сути, я использовал Anchor
, который маскируется в качестве кнопки для функции загрузки.
Как я могу использовать мою функцию итеративно или рекурсивно, чтобы получить все элементы, загруженные после ссылки из сетки ?
Функция загрузки:
public Anchor downloadButton(String btnText, String fileName)
{
Button btnDownload = new Button(btnText,VaadinIcon.DOWNLOAD.create());
StreamResource StreamResource = new StreamResource(fileName, () -> {
try
{
return new FileInputStream(fileName);
}
catch (FileNotFoundException e)
{
e.printStackTrace();
return new ByteArrayInputStream(new byte[]{});
}
});
Anchor anchorDownload = new Anchor(StreamResource, "");
anchorDownload.getElement().setAttribute("download", true);
anchorDownload.add(btnDownload);
return anchorDownload;
}
Создание сетки:
List<CorrespondenceFiles> fileList = new ArrayList<>();
fileList.add(new CorrespondenceFiles(1, mode + " - 90111", "Breakdown", "C:\\manager\\90111 - Korn, Niclas - Breakdown.pdf" , "90111 - Breakdown.pdf"));
fileList.add(new CorrespondenceFiles(1, mode + " - 90111 ", "Letter of Approval", "C:\\manager\\90111 - Letter.pdf", "90111 - Letter.pdf"));
fileList.add(new CorrespondenceFiles(2, mode + " - 90112", "Breakdown", "C:\\manager\\90112 - Breakdown.pdf", "90112 - 90112 - Breakdown.pdf"));
ListDataProvider<CorrespondenceFiles> ldp = new ListDataProvider<CorrespondenceFiles>(fileList);
grid.setDataProvider(ldp);
grid.addColumn(CorrespondenceFiles::getName)
.setHeader("Name");
grid.addColumn(CorrespondenceFiles::getDescription)
.setHeader("Description");
grid.addColumn(CorrespondenceFiles::getFileName)
.setHeader("File Name");
Примечание: список fileList служит только в качестве заполнителя для базы данных возвращаются заявления.