Jof*_*off 1 java download vaadin
我在玩 Vaadin,我想弄清楚如何以一致的方式下载多个文件。到目前为止,我已经创建了一个带有小类 的网格CorrespondenceFiles,它绘制了提供网格结构的 getter 和 setter 蓝图。
但是,我不确定如何为多个文件创建下载程序以及解决此问题的最佳方法是什么。基本上,我所做的是使用一个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;
}
Run Code Online (Sandbox Code Playgroud)
网格实例化:
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");
Run Code Online (Sandbox Code Playgroud)
注意:fileList列表仅用作数据库返回语句的占位符。
| 归档时间: |
|
| 查看次数: |
138 次 |
| 最近记录: |