基于谷歌搜索,我发现Vaadin 8使用名为BrowserFrame“(例如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中执行此操作的“唯一/正确”方法,那么我如何才能用新页面“更新”该html组件。 (我注意到,一旦创建了html组件,就没有“ setValue”方法可将html重置为新值。此外,即使您执行“ myHtmlComponent = new Html(...)”之类的操作,也不会似乎刷新了最终的UI。...(至少不是在我的代码中。)有想法吗?
答案 0 :(得分:1)
在Vaadin 13:https://github.com/vaadin/flow/pull/4898中引入了IFrame
组件。 Vaadin 13目前处于测试阶段,并将于三月初完成。
该组件中不应有任何不能与Vaadin 12一起使用的东西,因此您很可能可以将实现从https://github.com/vaadin/flow/blob/master/flow-html-components/src/main/java/com/vaadin/flow/component/html/IFrame.java复制到您自己的Vaadin 12项目中并按原样使用