如何在Vaadin中获取HTML Elmement(或DOM)?
在GWT我可以使用DOM.getElementById("myId");
我可以通过setId()
方法在我的Vaadin组件上设置id属性。例如:
Button button = new Button("Say Hello");
button.setId("myButton");
那么,我如何在Vaadin中检索这个DOM元素呢?
新的Vaadin Flow代替GWT的内部使用Web Components。
如果您愿意,这种新架构使我们可以从基于Java的服务器端轻松直接访问DOM。您可以读取DOM,并且可以操作DOM中的元素。阅读有关新元素API in the manual的信息。
本答案扩展了Vaadin expert,Henri Kerola的评论。
Vaadin是一个服务器端应用程序框架。它的目的是保护app开发人员免受HTML,CSS,JavaScript,DOM,GWT,HTTP,WebSocket以及此类网络技术的细节。应用程序开发人员用纯Java编写(可能只是用于调整的一小部分CSS)。 Vaadin透明且自动地生成HTML-CSS-JavaScript-GWT-DOM,这是在Web浏览器中呈现应用程序用户界面的表示所必需的。
所以没有办法从Java服务器端访问DOM,也没有必要这样做。
如果你想控制网络技术,那么Vaadin可能不是你最好的框架。
你可以用这个:
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
}
在Vaadin8中你可以试试这个:
。JavaScript.getCurrent()执行( “的document.getElementById( 'refreshButton')点击()”);