UiBinder - HTMLPanel与div

时间:2011-03-21 19:11:56

标签: java gwt uibinder

当我使用HTMLPanel而非普通div时会有某种惩罚吗?

E.g。

<g:HTMLPanel>
  <div>
    /* Widgets, more HTML */
  </div>
</g:HTMLPanel>

相反
<g:HTMLPanel>
  <g:HTMLPanel>
    /* Widgets, more HTML */
  </g:HTMLPanel>
</g:HTMLPanel>

2 个答案:

答案 0 :(得分:9)

简答:

如有疑问,请查看生成的代码(将-gen参数传递给DevMode或编译器)

答案很长:

总是会在简单的DOM元素上使用窗口小部件来降低运行时性能。甚至在通过解析HTML片段创建DOM元素时更是如此。

UiBinder将小部件视为HTMLPanel的子级时,它会生成一个带有生成唯一ID的占位符<span>,然后使用HTMLPanel.addAndReplaceElement替换该占位符用小部件。

所以第二个片段会产生(约)

HTMLPanel root = new HTMLPanel("<span id='uuid'></span>");
HTMLPanel child = new HTMLPanel("/* Widgets, more HTML. */");
root.addAndReplaceElement(child, "uuid");

答案 1 :(得分:2)

这不是性能损失,但我认为HTMLPanel是唯一一个在UiBinder中可以包含(作为子项)Widget和HTML标记混合的Widget。