我有一个使用UIBinder呈现UI的遗留应用程序。我试图将记录吐出到标准元素中。在我的view.ui.xml文件中,我有一个包含语义元素设置的表和一个包含相应ui:字段的元素。
<table>
<thead>
<tr>
<th> </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。有人可以帮我从这里出去吗?我不知道为什么这不起作用。