我想将 FlexTable 放入 CellTable,因此在我的 String getValue() 中我创建了 FlexTable 并返回 ft.toString(),其中 ft 是我的 FlexTable。
但是,当我执行 table.addColumn(flex_table_string, "Header") 时,GWT 不会呈现 HTML,而是将其保留为文本
请帮忙,
谢谢,
垫
您应该构建一个Cell使用 构建HTML表的SafeHtmlBuilder而不是构建一个小部件并获取它的HTML表示(顺便说一句,您甚至不应该toString()这样做,而是创建,比如说, a SimplePanel,将小部件放入其中,然后调用getElement().getInnerHTML()在父面板上)。
主要原因有两个:
SafeHtmlBuilder会更快(这就是CellTablevs. Gridor的全部意义FlexTable)话虽这么说,你所问的确实是可能的:使用Cell使用SafeHtmlBuilder'appendHtmlConstant方法的 a 。要么制作一个,要么与 Alex 建议的 escape/unescape 往返不同,使用 a但TextCell使用使用.SafeHtmlRendererAbstractSafehtmlRendererSafeHtmlUtils.fromTrustedString
您需要用 < 和 >替换所有的<and 。>
protected void render(Context context, SafeHtml value, SafeHtmlBuilder sb) {
String html = value.asString().replaceAll("<", "<").replaceAll(">", ">");
sb.appendHtmlConstant(html);
}