如何在Vaadin中获取HTML Elmement(或DOM)?在GWT中,我可以使用DOM.getElementById("myId");
我可以通过setId()
方法在我的Vaadin组件上设置 id 属性。例如:
Button button = new Button("Say Hello");
button.setId("myButton");
那么,如何在Vaadin中检索这个DOM元素?
答案 0 :(得分:3)
您可以使用:
public static Component findComponentById(HasComponents root, String id) {
for (Component child : root) {
if (id.equals(child.getId())) {
return child; // found it!
} else if (child instanceof HasComponents) { // recursively go through all children that themselves have children
Component result = findComponentById((HasComponents) child, id);
if (result != null) {
return result;
}
}
}
return null; // none was found
}
答案 1 :(得分:1)
新的Vaadin Flow代替GWT取代Web Components的内部使用。
如果您愿意,这种新架构使我们可以从基于Java的服务器端轻松直接访问DOM。您可以读取DOM,并且可以操作DOM中的元素。阅读有关新元素API in the manual的信息。
此答案扩展了Vaadin expert,Henri Kerola的评论。
Vaadin是服务器端应用程序框架。其目的是保护应用开发者免受HTML,CSS,JavaScript,DOM,GWT,HTTP,{{ 3}},以及此类网络技术。应用程序开发人员使用纯WebSocket进行编写(可能只需要一点点CSS来调整)。 Vaadin透明且自动地生成HTML-CSS-JavaScript-GWT-DOM,用于在Web浏览器中呈现应用程序用户界面的表示。
因此无法从Java服务器端访问Java,也无需一般地访问DOM。
如果您想控制网络技术,那么Vaadin可能不适合您。
答案 2 :(得分:0)
在Vaadin8中,您可以尝试以下操作:
JavaScript.getCurrent()。execute(“ document.getElementById('refreshButton')。click()”);