GWT SafeHtmlBuilder如何在div中插入html代码

时间:2012-10-29 10:31:53

标签: html templates gwt

我不知道我是否正在尝试对抗SafeHtmlBuilder的本质。问题是我想在div中添加html代码(例如,< a>标记)并使其安全。所以这是我的代码:

SafeHtmlBuilder builder = new SafeHtmlBuilder();

builder.append(TEMPLATES.diagramHeader(
    BasicConstants.diagramHeaderId + "description", 
    newBox.getDescription());

newDiv.setInnerHTML(builder.toSafeHtml().asString());

我的模板:

@Template("<div id=\"{0}\">{1}</div>") /* Description */
SafeHtml diagramHeader(String idDesc, String description);

当getDescription()返回带有html代码的字符串(例如,&lt; a&gt;标记)并且渲染newDiv的内容时,我看不到超链接,我看到的是超链接的HTML代码。

我想看看超链接,我该怎么做? (我愿意牺牲HTML的安全性)。

谢谢!

1 个答案:

答案 0 :(得分:4)

如果模板的description参数可以包含标记,则它应该是SafeHtml类型。

然后您使用SafeHtmlUtils.fromTrustedString(newBox.getDescription()),因为您相信newBox.getDescription() 安全


作为旁注,我不明白为什么:

  1. 您只使用SafeHtmlBuilderappend()一次
  2. 您使用setInnerHTML代替setInnerSafeHtml(也许您没有使用GWT 2.5?)