要求:如何通过ID获取元素?我需要框架

问题描述 投票:3回答:3

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

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

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

vaadin vaadin7
3个回答
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是一个服务器端应用程序框架。它的目的是保护app开发人员免受HTMLCSSJavaScriptDOMGWTHTTPWebSocket以及此类网络技术的细节。应用程序开发人员用纯Java编写(可能只是用于调整的一小部分CSS)。 Vaadin透明且自动地生成HTML-CSS-JavaScript-GWT-DOM,这是在Web浏览器中呈现应用程序用户界面的表示所必需的。

所以没有办法从Java服务器端访问DOM,也没有必要这样做。

如果你想控制网络技术,那么Vaadin可能不是你最好的框架。


4
投票

你可以用这个:

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


0
投票

在Vaadin8中你可以试试这个:

。JavaScript.getCurrent()执行( “的document.getElementById( 'refreshButton')点击()”);

© www.soinside.com 2019 - 2024. All rights reserved.