DOM.getElementById dans GWT ne semble pas fonctionner
J'ai l'extrait de code suivant:
myPanel.getElement().setId("left-content");
//...
//...
Element e = DOM.getElementById("left-content");//this returns NULL!
Mise à jour
Voici un long extrait de code:
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 !!!
//....
}
Ci-dessus en Composite est ajoutée à la RootPanel
.
OriginalL'auteur Muhammad Hewedy | 2011-02-07
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
DOM.getElementById
seulement si la demande de widget est réellement attaché à la DOM.Votre code montre que vous définissez la
id
dans le constructeur et demande le correspondant de l'élément juste après lorsque le widget n'est pas attaché. Votre widget est réellement attaché uniquement lorsque sa onLoad méthode est appelée.OriginalL'auteur emerix
Je suppose que vous n'avez pas ajouter myPanel vers les DOM (par exemple
RootPanel.get().add(myPanel)
) avant d'appelerDOM.getElementById("left-content")
."verticalPanel" contient "containerPanel", qui contient "leftContentPanel". Ok. RootComposite définit également "verticalPanel" comme son Widget. Ok. Mais le problème est: Votre RootComposite n'a pas été ajouté au DOM pourtant, lorsque vous appelez
DOM.getElementById("left-content")
. De sorte que vous aurez à faire quelque chose commenew RootComposite(...);
, puis ajouter le RootComposite vers les DOM, et alors seulement, vous pouvez appeler getElementById.OriginalL'auteur Chris Lercher