L'insertion de GWT widget dans un élément div

Je suis en utilisant une GWT bibliothèque (gwt-openlayers) qui me permet de créer une carte popup contenant du code HTML arbitraire, similaire à Google Maps. J'ai besoin de ce code HTML pour contenir une GWT Bouton de widget.

Je suis la création de certains éléments HTML à la volée comme ceci:

Element outerDiv = DOM.createDiv();
outerDiv.getStyle().setOverflow(Overflow.HIDDEN);
outerDiv.getStyle().setWidth(100, Unit.PCT);
outerDiv.appendChild(new HTML(mapPOI.getHtmlDetails()).getElement());
Button popupButton = new Button("View Property");
popupButton.getElement().getStyle().setFloat(com.google.gwt.dom.client.Style.Float.RIGHT);
outerDiv.appendChild(popupButton.getElement());

Puis je me fais de la source HTML pour ces éléments en appelant

String src = outerDiv.toString();

et en insérant ce code html dans mon marqueur de carte. Maintenant, mon marqueur de carte affiche le contenu ok, y compris le bouton. Toutefois, le bouton ne sera pas répondre à tous les événements! De ce que j'ai pu rassembler, c'est parce que les boutons onAttach() la méthode n'est jamais appelé.

Est-il une meilleure façon de le faire?

Merci,

Jon

~~~~EDIT~~~~

Je vais maintenant essayer une nouvelle façon de faire ce qui semble être la méthode acceptée à la recherche à d'autres postes similaires.

D'abord, je suis la création de mon div:

String divId = "popup-" + ref;
String innerHTML = "<div id=\"" +divId + "\"></div>";

Ensuite, je suis en ajoutant ce ma carte pop-up et de l'affichage (ce qui ajoute à la DOM). Après le pop-up s'affiche, je suis de l'Élément comme suit et tente d'enrouler une HTMLPanel autour d'elle:

Element element = Document.get().getElementById(divId);
HTMLPanel popupHTML = HTMLPanel.wrap(element);

Mon élément div est extrait avec succès. Cependant, HTMLPanel.wrap(element); n'est pas complète. La raison pour cela est que wrap(..) appels RootPanel.detachOnWindowClose(Widget widget), qui comprend les assertions suivantes:

assert !widgetsToDetach.contains(widget) : "detachOnUnload() called twice "
    + "for the same widget";
assert !isElementChildOfWidget(widget.getElement()) : "A widget that has "
    + "an existing parent widget may not be added to the detach list";

J'ai mis des points d'arrêt dans et il semble que la 2ème affirmation est défaillante!

N'quelqu'un a une idée de quoi cela peut-il être le cas? Devrait, à défaut de cette affirmation vraiment entraîner une défaillance complète de la méthode (pas de retour)?

OriginalL'auteur DeadPassive | 2012-07-13