(GWT) - 为什么我对TableSectionElement.setInnerSafeHtml()的调用没有呈现给DOM?

时间:2018-04-04 19:27:47

标签: gwt uibinder

我有一个使用UIBinder呈现UI的遗留应用程序。我试图将记录吐出到标准元素中。在我的view.ui.xml文件中,我有一个包含语义元素设置的表和一个包含相应ui:字段的元素。

<table>
  <thead>
    <tr>
      <th>&nbsp;</th>
      <th>Customer #</th>
      <!-- Shortened for brevity -->
    </tr>
  </thead>
  <tbody ui:field="tbody"><!-- Note the ui:field defined -->
  </tbody>
</table>

在我的view.java类中,我将ui:field耦合到TableSectionElement。

public class View extends Composite implements ViewPresenterInterface {
    @UiField TableSectionElement tbody;
    public TableSectionElement getTbody() {
      return tbody;
    }
}

在我的类中处理表格元素的渲染,代码非常简单:

private void renderOrderTable() {
        List<OrderToReviewProxy> sortedList = sortOrders(orders);
        SafeHtmlBuilder sb = new SafeHtmlBuilder();
        for(OrderToReviewProxy order : sortedList) {            
            sb.appendHtmlConstant("<tr>");
            sb.appendHtmlConstant("<td>");
            sb.appendEscaped(order.getCustomerNumber());
            sb.appendHtmlConstant("</td>");
            sb.appendHtmlConstant("</tr>");
        }
        view.getTbody().setInnerHTML(""); // Breakpoint A

        view.getTbody().setInnerSafeHtml(sb.toSafeHtml()); // Breakpoint B
    }

在Breakpoint A,检查view.getTbody()会显示&lt; tbody&gt;&lt; / tbody&gt;元素为空,如预期的那样。 踩过断点B,检查view.getTbody()会显示&lt; tbody&gt;具有SafeHtmlBuilder在for循环期间生成的预期HTML的元素。

但是,当我查看呈现的页面时,&lt; tbody&gt; element没有子节点。调用sb.toSafeHtml()的HTML似乎都没有写入DOM。有人可以帮我从这里出去吗?我不知道为什么这不起作用。

0 个答案:

没有答案