Vaadin:如何通过ID获取Element?

时间:2014-07-23 10:47:13

标签: vaadin vaadin7

如何在Vaadin中获取HTML Elmement(或DOM)?在GWT中,我可以使用DOM.getElementById("myId"); 我可以通过setId()方法在我的Vaadin组件上设置 id 属性。例如:

    Button button = new Button("Say Hello");
    button.setId("myButton");

那么,如何在Vaadin中检索这个DOM元素?

3 个答案:

答案 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
}

来源:https://vaadin.com/forum/#!/thread/3199995/3199994

答案 1 :(得分:1)

Vaadin 10( Vaadin Flow

新的Vaadin Flow代替GWT取代Web Components的内部使用。

如果您愿意,这种新架构使我们可以从基于Java的服务器端轻松直接访问DOM。您可以读取DOM,并且可以操作DOM中的元素。阅读有关新元素API in the manual的信息。

Vaadin 6,7,& 8(Vaadin Framework

此答案扩展了Vaadin expertHenri Kerola的评论。

Vaadin是服务器端应用程序框架。其目的是保护应用开发者免受HTMLCSSJavaScriptDOMGWTHTTP,{{ 3}},以及此类网络技术。应用程序开发人员使用纯WebSocket进行编写(可能只需要一点点CSS来调整)。 Vaadin透明且自动地生成HTML-CSS-JavaScript-GWT-DOM,用于在Web浏览器中呈现应用程序用户界面的表示。

因此无法从Java服务器端访问Java,也无需一般地访问DOM

如果您想控制网络技术,那么Vaadin可能不适合您。

答案 2 :(得分:0)

在Vaadin8中,您可以尝试以下操作:

JavaScript.getCurrent()。execute(“ document.getElementById('refreshButton')。click()”);