DOM.getElementById в GWT не работает - PullRequest
4 голосов
/ 07 февраля 2011

У меня есть следующий фрагмент кода:

myPanel.getElement().setId("left-content");
//...
//...
Element e = DOM.getElementById("left-content");// this returns NULL!

Обновление

Вот более длинный фрагмент кода:

public class RootComposite extends Composite
{
    public RootComposite(int comboSelectedIndex)
    {

        VerticalPanel verticalPanel = new VerticalPanel();
        initWidget(verticalPanel);
        VerticalPanel containerPanel = new VerticalPanel();
        containerPanel.setSpacing(1);
        verticalPanel.add(containerPanel);
        verticalPanel.setSize("100%", "100%");

        RightPanelMainComposite rightPanelMainComposite =  new RightPanelMainComposite();

        VerticalPanel rightcolVerticalPanel = new VerticalPanel();
        rightcolVerticalPanel.setStyleName("rightcol");
        VerticalPanel searchVerticalPanel = new VerticalPanel();
        searchVerticalPanel.setStyleName("search");
        rightcolVerticalPanel.add(searchVerticalPanel);
        searchVerticalPanel.add(rightPanelMainComposite);

        ContentComposite contentComposite = new ContentComposite();

        HorizontalPanel leftContentPanel = new HorizontalPanel();
        containerPanel.add(leftContentPanel);
        leftContentPanel.getElement().setAttribute("id", "left-content");

        DOM.getElementById("left-content"); // returns NULL !!!
        // ....
    }

Вышеуказанный Композит добавляется к RootPanel.

Ответы [ 2 ]

10 голосов
/ 07 февраля 2011

Вы можете использовать DOM.getElementById, только если запрошенный виджет действительно подключен к DOM.Ваш код показывает, что вы устанавливаете id в конструкторе и запрашивает соответствующий элемент сразу после того, как виджет еще не присоединен.Ваш виджет на самом деле присоединяется только тогда, когда вызывается его метод onLoad .

6 голосов
/ 07 февраля 2011

Я предполагаю, что вы не добавили myPanel в DOM (например, RootPanel.get().add(myPanel)) до вызова DOM.getElementById("left-content").

...