Ваадин: Как получить элемент по ID?

Как получить HTML Elmement (или DOM) в Vaadin?
В GWT я могу использовать как DOM.getElementById("myId"); я могу установить атрибут id для своих компонентов Vaadin методом setId(). Например:

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

Итак, как я могу получить этот элемент DOM в Vaadin?


person Cataclysm    schedule 23.07.2014    source источник
comment
Я уверен, что этот вопрос и ответы не решение для меня, потому что они для GWT, а не для vaadin.   -  person Cataclysm    schedule 23.07.2014
comment
Vaadin — это фреймворк на стороне сервера, поэтому вы не можете получить доступ к элементу HTML в коде на стороне сервера.   -  person Henri Kerola    schedule 23.07.2014
comment
@HenriKerola Верно в Vaadin 6-7-8, но не в 10 и более поздних версиях, известных как Vaadin Flow. Новое поколение Flow заменяет GWT для веб-компонентов. Теперь у нас есть прямой доступ к DOM со стороны сервера на основе Java.   -  person Basil Bourque    schedule 26.07.2018


Ответы (3)


Ваадин 10 (Ваадин Флоу)

Новое поколение Vaadin Flow заменяет внутреннее использование GWT для Веб-компоненты.

Эта новая архитектура предоставляет нам простой прямой доступ к DOM со стороны сервера на основе Java, если вы того пожелаете. Вы можете читать DOM и управлять элементами в DOM. Прочитайте о новом Element API в руководстве.

Vaadin 6, 7 и 8 (Vaadin Framework)

Этот ответ расширяет комментарий эксперта Vaadin, Анри Керола.

Vaadin — это серверная платформа приложений. Его цель — оградить разработчика приложения от подробностей HTML, CSS, JavaScript, DOM, GWT, HTTP, WebSocket и подобные веб-технологии. Разработчик приложения пишет на чистом Java (и, возможно, немного использует CSS для настройки ). Vaadin прозрачно и автоматически генерирует HTML-CSS-JavaScript-GWT-DOM, необходимые для отображения пользовательского интерфейса приложения в веб-браузере.

Таким образом, нет никакого способа получить доступ к DOM со стороны этого Java-сервера, и нет необходимости делай так вообще.

Если вы хотите взять под контроль веб-технологии, то Vaadin, вероятно, не лучший фреймворк для вас.

person Basil Bourque    schedule 15.08.2015
comment
А вы не могли получить элемент по id в Ваадин? См. эти ссылки: stackoverflow.com/questions/13948089/, vaadin.com/ directory#!addon/dom , vaadin.com/api/7.1.8/com/google/gwt/user/client/DOM.html - person DarioBB; 25.05.2016
comment
Вы можете создать доп. - person Alex78191; 06.06.2019

Вы можете использовать это:

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

person Topera    schedule 05.04.2016

В Vaadin8 вы можете попробовать это:

JavaScript.getCurrent().execute("document.getElementById('refreshButton').click()");

person jlemon    schedule 05.09.2018