我想在不扩展Button的情况下使用Vaadin的FileDownloader。最终结果应该是用户点击表的条目,然后应该触发下载。
使用FileDownloader它可以正常工作,但似乎你需要扩展一个Button才能使它工作。如果它有帮助,这里是代码:
table.addItemClickListener(new ItemClickListener() {
public void itemClick(ItemClickEvent event) {
Map<String, Object> dok = dbService.getDokument(event.getItem().getItemProperty("Id").getValue().toString());
myResource = createResource(dok);
fileDownloader = new FileDownloader(myResource);
//HERE I WANT TO TRIGGER THE DOWNLOAD
}
});
private StreamResource createResource(Map<String, Object> dok) {
return new StreamResource(new StreamSource() {
@Override
public InputStream getStream() {
byte[] file = (byte[]) dok.get("DATA");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bos.write(file, 0, file.length);
return new ByteArrayInputStream(bos.toByteArray());
}
}, getValue(dok.get("DOK_NAME")));
}