GWT: не удалось получить элемент html по идентификатору, так как rootpanel возвращает ноль
Я новичок в GWT. Мы используем 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"> </td>
</tr>
<tr id="tran_body">
<td style="background-color:#CCFFFF;">
<div id="clientContainer"></div>
</td>
<td style="background-color:#CCFFFF;"> </td>
</tr>
<tr id="tran_footer" style="background-color:#CCFFFF;">
<td colspan="2"> </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 ")" возвращает ноль.
Я даже попробовал с
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>
Кто-нибудь может указать мне, что мне не хватает?
Заранее спасибо.
1 ответ
Я понял, что мой flexTableLayout еще не был прикреплен к rootpanel. Было слишком рано запрашивать это.