如何创建可以重置为新值的 Vaadin 12 "iFrame" 组件

How to create a Vaadin 12 "iFrame" component that can be reset to a new value

根据谷歌搜索,我发现 Vaadin 8 使用名为 BrowserFrame 的 class(例如 https://vaadin.com/docs/v7/framework/components/components-embedded.html)提供了很好的 "iFrame" 支持,或者仅见下文:

BrowserFrame browser = new BrowserFrame("Browser",
    new ExternalResource("http://demo.vaadin.com/sampler/"));
browser.setWidth("600px");
browser.setHeight("400px");
layout.addComponent(browser);

但是,这在Vaadin 12中不存在。是否有推荐的方法在Vaadin 12中创建iFrame组件?到目前为止,我通过创建一个 vaadin12 html 组件来破解它,它允许我将任何旧的 html 放入其中,如下所示:

MainApp.iFrameHelp = new Html("<iframe src=\"https://docs.readthedocs.io/en/latest/intro/getting-started-with-sphinx.html/intro/getting-started-with-sphinx.html\"></iframe>");

。但是,如果这是在 Vaadin 12 中执行此操作的 "only/right" 方法,那么我怎样才能让这个 html 组件成为带有新页面的 "updated"。 (我注意到,一旦创建了 html 组件,就没有 "setValue" 方法可以将 html 重置为新值。此外,即使您执行 "myHtmlComponent = new Html(...)" ,它似乎没有刷新最终的 UI...(至少,在我的代码中没有。)想法?

Vaadin 13 中引入了一个 IFrame 组件:https://github.com/vaadin/flow/pull/4898。 Vaadin 13 目前处于测试阶段,将于 3 月初完成。

该组件中不应该有任何不能与 Vaadin 12 协同工作的内容,因此您很可能只需将 https://github.com/vaadin/flow/blob/master/flow-html-components/src/main/java/com/vaadin/flow/component/html/IFrame.java 中的实现复制到您自己的 Vaadin 12 项目中并将其用作-是。