我想将 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
会更快(这就是CellTable
vs. Grid
or的全部意义FlexTable
)话虽这么说,你所问的确实是可能的:使用Cell
使用SafeHtmlBuilder
'appendHtmlConstant
方法的 a 。要么制作一个,要么与 Alex 建议的 escape/unescape 往返不同,使用 a但TextCell
使用使用.SafeHtmlRenderer
AbstractSafehtmlRenderer
SafeHtmlUtils.fromTrustedString
您需要用 < 和 >替换所有的<
and 。>
protected void render(Context context, SafeHtml value, SafeHtmlBuilder sb) {
String html = value.asString().replaceAll("<", "<").replaceAll(">", ">");
sb.appendHtmlConstant(html);
}