Как создать компонент Vaadin 12 "iFrame", который можно сбросить на новое значение
Основываясь на Google, я обнаружил, что Vaadin 8 имеет хорошую поддержку "iFrame" с использованием класса BrowserFrame (например, https://vaadin.com/docs/v7/framework/components/components-embedded.html) или просто смотрите ниже:
BrowserFrame browser = new BrowserFrame("Browser",
new ExternalResource("http://demo.vaadin.com/sampler/"));
browser.setWidth("600px");
browser.setHeight("400px");
layout.addComponent(browser);
Однако этого нет в Vaadin 12. Существует ли рекомендуемый способ создания компонента iFrame в Vaadin 12? До сих пор я взломал его, создав html-компонент vaadin12, который позволяет мне помещать в него любой старый 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(...)", это НЕ кажется, чтобы обновить окончательный интерфейс....(по крайней мере, не в моем коде.) Мысли?
1 ответ
IFrame
Компонент представлен в Vaadin 13: https://github.com/vaadin/flow/pull/4898. 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 и используйте его как есть.