GWT中的DOM.getElementById似乎不起作用

Muh*_*edy 4 gwt getelementbyid

我有以下代码段:

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

更新

这是一个更长的代码段:

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 !!!
        // ....
    }
Run Code Online (Sandbox Code Playgroud)

以上综合报道正在加入RootPanel.

eme*_*rix 10

DOM.getElementById仅当请求的窗口小部件实际附加到DOM时,才能使用.您的代码显示您id在构造函数中设置并在尚未附加窗口小部件后立即请求对应元素.实际上,只有在调用onLoad方法时,才会附加小部件.


Chr*_*her 6

我假设你RootPanel.get().add(myPanel)在调用之前没有将myPanel添加到DOM(例如)DOM.getElementById("left-content").