GWT: не удалось подобрать элемент html по идентификатору, так как корневая панель возвращает значение null

Я новичок в ГВТ. Мы используем GWT 2.4.0, jdk 1.6, mvp4g 1.4.0.

Я пытаюсь создать веб-приложение, в котором мне нужно встроить некоторый HTML-код в представление, а затем выбрать определенный идентификатор в этом HTML из представления, чтобы добавить или удалить элементы или виджеты. Мои html-коды встраиваются нормально, но подтягивание элементов не работает.

Вот мой HTML-файл выглядит так:

<table align="center" border="1" cellpadding="1" cellspacing="10" id="transaction_monitor" style="width:100%;border: 1px solid black;padding: 5px;">
    <tbody>
        <tr id="tran_header" style="background-color:#CCFFFF;border:0px">
            <td colspan="2">&nbsp;</td>
        </tr>
        <tr id="tran_body">
            <td style="background-color:#CCFFFF;">
            <div id="clientContainer"></div>
            </td>
            <td style="background-color:#CCFFFF;">&nbsp;</td>
        </tr>
        <tr id="tran_footer" style="background-color:#CCFFFF;">
            <td colspan="2">&nbsp;</td>
        </tr>
    </tbody>
</table>

В представлении я внедрил этот HTML-код:

    flexTableLayout = new FlexTable();

    initWidget( flexTableLayout );

    //Window.alert(Resources.INSTANCE.synchronous().getText());

    HTML htmlPanel = new HTML();
    String html = Resources.INSTANCE.synchronous().getText();
    htmlPanel.setHTML(html);

    flexTableLayout.setWidget( 0, 0, htmlPanel );

Эта часть работает нормально и создает представление, как и ожидалось. А с помощью F12 я смог найти часть div id="clientContainer" в исходном коде страницы-браузера.

Но после этого я пытался получить элемент «div» из этого html по идентификатору «clientContainer» и добавить к нему метку как:

Label lblFile = new Label( "File:" );
RootPanel.get("clientContainer").add(lblFile);

И эта часть работает не так, как ожидалось. Во время тестирования я обнаружил, что "RootPanel.get("clientContainer")" возвращает значение null.

Я даже пробовал с

Document.get().getElementById("clientContainer").add(lblFile);

И не удалось, так как Document.get().getElementById("clientContainer") имеет значение null.

Мой .gwt.xml:

  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.6.4//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.6.4/distro-source/core/src/gwt-module.dtd">
<module rename-to='onlinetoolkit'>
  <!-- Inherit the core Web Toolkit stuff.                        -->
  <inherits name='com.google.gwt.user.User'/>

  <!-- Inherit the default GWT style sheet.  You can change       -->
  <!-- the theme of your GWT application by uncommenting          -->
  <!-- any one of the following lines.                            -->
  <inherits name='com.google.gwt.user.theme.standard.Standard'/>

  <!-- Other module inherits                                      -->
  <inherits name='com.mvp4g.Mvp4gModule'/>
  <inherits name="com.google.gwt.resources.Resources" />

  <!-- Specify the app entry point class.                         -->
  <entry-point class='com.mvp4g.client.Mvp4gEntryPoint'/>
</module>

Может ли кто-нибудь указать мне, что мне не хватает?

Заранее спасибо.


person VictorGram    schedule 09.10.2014    source источник


Ответы (1)


Я понял, что мой flexTableLayout еще не подключен к корневой панели. Было слишком рано спрашивать об этом.

person VictorGram    schedule 10.10.2014