【问题标题】:GWT CellTable Set Column to HTMLGWT CellTable 将列设置为 HTML
【发布时间】:2012-05-31 18:57:52
【问题描述】:

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

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

请帮忙,

谢谢,

垫子

【问题讨论】:

    标签: html gwt celltable flextable


    【解决方案1】:

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

    • SafeHtmlBuilder 会更快(这就是 CellTableGridFlexTable 的重点)
    • 您超出预期:序列化小部件将丢失所有事件处理。

    话虽如此,您所要求的确实是可能的:使用使用SafeHtmlBuilderappendHtmlConstant 方法的Cell。要么制作一个,要么与 Alex 建议的 escape/unescape 往返不同,使用 TextCell,但使用使用 SafeHtmlUtils.fromTrustedString 的自定义 SafeHtmlRenderer(为简单起见扩展 AbstractSafehtmlRenderer)构造它。

    【讨论】:

      【解决方案2】:

      您需要将所有<> 替换为。

      protected void render(Context context, SafeHtml value, SafeHtmlBuilder sb) {
          String html = value.asString().replaceAll("&lt;", "<").replaceAll("&gt;", ">");
          sb.appendHtmlConstant(html);
      }
      

      【讨论】:

        猜你喜欢
        • 2011-05-26
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 2011-08-13
        • 1970-01-01
        • 1970-01-01
        • 2017-07-13
        • 1970-01-01
        相关资源
        最近更新 更多