3

我不知道我是否试图做一些违背 SafeHtmlBuilder 本质的事情。问题是我想将 html 代码(例如,一个 < a > 标签)放在一个 div 中并使其安全。所以这是我的代码:

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 代码的字符串(例如,一个<a> 标记)并呈现newDiv 的内容时,我看不到超链接,我看到的是超链接的HTML 代码。

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

谢谢!

4

1 回答 1

4

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

然后你会使用SafeHtmlUtils.fromTrustedString(newBox.getDescription()),因为你相信newBox.getDescription()安全的。


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

  1. SafeHtmlBuilder只使用append()一次
  2. 您使用setInnerHTML而不是setInnerSafeHtml(也许您没有使用 GWT 2.5?)
于 2012-10-29T11:14:21.767 回答