gpt4 book ai didi

java - BrowserWindowOpener 和动态 url/资源 VAADIN

转载 作者:行者123 更新时间:2023-11-30 03:59:32 26 4
gpt4 key购买 nike

有没有办法为新的BrowserWindowOpener(dynamicURL)传递动态URL?

我想要实现如下:选择表中的文件并单击按钮,这将打开一个带有文件 View 的浏览器;您可以打开随机文件,因此 BrowserWindowOpener 的参数必须是动态的。

我知道还有其他打开方式,例如:Page.getCurrent().open...但我需要像 BrowserWindowOpener 那样禁用 URL 栏进行更改。

最佳答案

我找到的解决方案可能被认为是一种黑客行为。如果有经验丰富的 Vaadin 开发者碰巧看到这篇文章,请告诉我是否有更好的方法。

同时,解决方案如下:

  • 使用ExternalResource(您可以在ExternalResource的构造函数中放入任何url)初始化BrowserWindowOpener,该ExternalResource已重写getURL方法以返回取决于表中选择的值
  • 每次表中的值发生变化时,将BrowserWindowOpener标记为dirty,以便触发共享状态的变化

下面是一个例子:

public class DownloadFileTable extends CustomComponent {

private String currentSelectedFile = null;

public DownloadFileTable() {

VerticalLayout layout = new VerticalLayout();
setCompositionRoot(layout);

IndexedContainer container = new IndexedContainer();
container.addContainerProperty("name", String.class, "default");
container.addItem("image1.jpg").getItemProperty("name").setValue("image1.jpg");
container.addItem("text.csv").getItemProperty("name").setValue("text.csv");
container.addItem("document.doc").getItemProperty("name").setValue("document.doc");

Button downloadButton = new Button("Download selected file");
final BrowserWindowOpener browserWindowOpener = new BrowserWindowOpener(new ExternalResource("http://google.com") {

@Override
public String getURL() {
return currentSelectedFile;
}
});
browserWindowOpener.setFeatures("location=0");
browserWindowOpener.extend(downloadButton);

Table table = new Table("Files", container);
table.setSelectable(true);
table.setImmediate(true);
table.addValueChangeListener(new Property.ValueChangeListener() {
@Override
public void valueChange(Property.ValueChangeEvent event) {
currentSelectedFile = (String) event.getProperty().getValue();
browserWindowOpener.markAsDirty();
}
});
layout.addComponent(table);
layout.addComponent(downloadButton);
}

}

browserWindowOpener.setFeatures("location=0"); 告诉弹出窗口限制用户修改地址栏。

关于java - BrowserWindowOpener 和动态 url/资源 VAADIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22304784/

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