Vaadin 瓦丁:如何通过ID获取元素?

Vaadin 瓦丁:如何通过ID获取元素?,vaadin,vaadin7,Vaadin,Vaadin7,如何在Vaadin中获取HTML元素(或DOM?在GWT中,我可以使用DOM.getElementById(“myId”) 我可以通过setId()方法在我的Vaadin组件上设置id属性。例如: Button button = new Button("Say Hello"); button.setId("myButton"); 那么,如何在Vaadin中检索这个DOM元素呢?Vaadin 10(Vaadin流) 新一代取代了for的内部使用 如果您愿意,这种新的体系结构为我们

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

    Button button = new Button("Say Hello");
    button.setId("myButton");
那么,如何在Vaadin中检索这个DOM元素呢?

Vaadin 10(Vaadin流) 新一代取代了for的内部使用

如果您愿意,这种新的体系结构为我们提供了从基于Java的服务器端直接访问DOM的方便。您可以读取DOM,也可以操作DOM中的元素。阅读新元素API

瓦丁6号、7号和8号() 这一回答进一步阐述了作者的评论

是一个服务器端应用程序框架。它的目的是保护应用程序开发人员不受、、、等web技术细节的影响。应用程序开发人员使用纯文本编写(可能还有一点CSS调整)。Vaadin透明自动地生成HTML CSS JavaScript GWT DOM,该DOM是在web浏览器中呈现应用程序用户界面所必需的

因此,没有办法从Java服务器端访问,通常也不需要这样做

如果您想控制web技术,那么可能不是最适合您的框架。

您可以使用以下方法:

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().execute(“document.getElementById('refreshButton')。click()”

我确信问题和答案对我来说不是解决方案,因为它们是针对GWT而不是针对vaadin的。vaadin是一个服务器端框架,因此您无法访问服务器端代码中的HTML元素。@HenriKerola在vaadin 6-7-8中为True,但在10及更高版本中为True,称为。新的流生成将取代。现在,我们确实可以从基于Java的服务器端直接访问DOM了?请参见以下链接:,,您可以创建附加模块。