如何在GWT HTMLPanel下包装元素
假设我用一些HTML创建了一个如何在GWT HTMLPanel下包装元素,gwt,Gwt,假设我用一些HTML创建了一个HTMLPanel,比如: <p> Blah blah <span id='1'>more html... </span> </p> 倒数第二行与AssertionError一起消失:具有现有父窗口小部件的窗口小部件可能不会添加到分离列表中 有没有办法在HTMLPanel中包装子元素 这是GWT2.4 注意 在做了一些评论和回答之后,我意识到我忘了提到:通常这里的答案是UiBinder,但我不使用它,因为输入是
HTMLPanel
,比如:
<p>
Blah blah <span id='1'>more html... </span>
</p>
倒数第二行与AssertionError一起消失:具有现有父窗口小部件的窗口小部件可能不会添加到分离列表中
有没有办法在HTMLPanel
中包装子元素
这是GWT2.4
注意
在做了一些评论和回答之后,我意识到我忘了提到:通常这里的答案是
UiBinder
,但我不使用它,因为输入是非程序员在另一个上下文中创建的html文本 不,不是真的。之所以会出现此异常,是因为
元素已经是某个小部件的一部分wrap
方法只能用于在不属于其他小部件的元素之上创建小部件。如果要处理此范围上的单击,可以将dom处理程序添加到HTMLPanel
,然后检测单击了哪个元素。将您的
转换为UiBinder模板中的一个元素,并向其附加任何您想要的内容:)。UiBinder是您的朋友。是的,通常是这样。但在本例中不是这样,因为我正在解析来自用户的html/wiki文本。它面向高级用户,但不面向程序员,uibinder语法过于冗长和低级。(我没有检查,但在运行时可能也不可用。)是的,这通常是最好的方法。我应该在我的问题中说明为什么我没有使用UiBinder。我会在问题上加上这个。好的,谢谢。由于没有简单的方法,只需一个方法调用,我就可以解析HTML并将我想要制作的部分提取到子小部件中。我在HTMLPanel
中留下一个
,然后调用addAndReplaceElement(widget,uniqueId)
。
HTMLPanel html = new HTMLPanel(stringOfHTML);
parentWidget.add(html);
String id = "1";
Element span = html.getElementById(id);
InlineHTML wid = InlineHTML.wrap(span); // -- error here
html.addAndReplaceElement(wid, id);