gpt4 book ai didi

vaadin - 如何在没有按钮的情况下在 vaadin 中开始文件下载?

转载 作者:行者123 更新时间:2023-12-03 23:26:23 25 4
gpt4 key购买 nike

我知道创建一个 FileDownloader 真的很容易并使用 Button 调用扩展.但是如何在没有 Button 的情况下开始下载?
在我现在的特定情况下,我有一个 ComboBox并且我想发送给用户的文件是在根据输入更改其值后生成的。该文件应立即发送,无需等待再次单击。这很容易吗?

谢谢
拉斐尔

最佳答案

我自己找到了解决方案。其实两个。
第一个使用不推荐使用的方法 Page.open()

public class DownloadComponent extends CustomComponent implements ValueChangeListener {
private ComboBox cb = new ComboBox();

public DownloadComponent() {
cb.addValueChangeListener(this);
cb.setNewItemsAllowed(true);
cb.setImmediate(true);
cb.setNullSelectionAllowed(false);
setCompositionRoot(cb);
}

@Override
public void valueChange(ValueChangeEvent event) {
String val = (String) event.getProperty().getValue();
FileResource res = new FileResource(new File(val));
Page.getCurrent().open(res, null, false);
}
}

javadoc here提到一些内存和安全问题作为将其标记为已弃用的原因

在第二个中,我尝试通过在 DownloadComponent 中注册资源来绕过这个已弃用的方法。如果 vaadin 专家对此解决方案发表评论,我会很高兴。
public class DownloadComponent extends CustomComponent implements ValueChangeListener {
private ComboBox cb = new ComboBox();
private static final String MYKEY = "download";

public DownloadComponent() {
cb.addValueChangeListener(this);
cb.setNewItemsAllowed(true);
cb.setImmediate(true);
cb.setNullSelectionAllowed(false);
setCompositionRoot(cb);
}

@Override
public void valueChange(ValueChangeEvent event) {
String val = (String) event.getProperty().getValue();
FileResource res = new FileResource(new File(val));
setResource(MYKEY, res);
ResourceReference rr = ResourceReference.create(res, this, MYKEY);
Page.getCurrent().open(rr.getURL(), null);
}
}

注意:我真的不允许用户打开我在服务器上的所有文件,你应该 不是 要么这样做。这只是为了演示。

关于vaadin - 如何在没有按钮的情况下在 vaadin 中开始文件下载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20400017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com