-1

我想将 FlexTable 放入 CellTable,因此在我的 String getValue() 中我创建了 FlexTable 并返回 ft.toString(),其中 ft 是我的 FlexTable。

但是,当我执行 table.addColumn(flex_table_string, "Header") 时,GWT 不会呈现 HTML,而是将其保留为文本

请帮忙,

谢谢,

4

2 回答 2

2

您应该构建一个Cell使用 构建HTML表的SafeHtmlBuilder而不是构建一个小部件并获取它的HTML表示(顺便说一句,您甚至不应该toString()这样做,而是创建,比如说, a SimplePanel,将小部件放入其中,然后调用getElement().getInnerHTML()在父面板上)。
主要原因有两个:

  • SafeHtmlBuilder会更快(这就是CellTablevs. Gridor的全部意义FlexTable
  • 你打破了预期:序列化一个小部件将失去所有事件处理。

话虽这么说,你所问的确实是可能的:使用Cell使用SafeHtmlBuilder'appendHtmlConstant方法的 a 。要么制作一个,要么与 Alex 建议的 escape/unescape 往返不同,使用 a但TextCell使用使用.SafeHtmlRendererAbstractSafehtmlRendererSafeHtmlUtils.fromTrustedString

于 2012-06-01T12:28:33.683 回答
-1

您需要用 < 和 >替换所有的&lt;and 。&gt;

protected void render(Context context, SafeHtml value, SafeHtmlBuilder sb) {
    String html = value.asString().replaceAll("&lt;", "<").replaceAll("&gt;", ">");
    sb.appendHtmlConstant(html);
}
于 2012-06-01T05:36:21.777 回答