我不知道我是否正在尝试对抗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的安全性)。
谢谢!
答案 0 :(得分:4)
如果模板的description
参数可以包含标记,则它应该是SafeHtml
类型。
然后您使用SafeHtmlUtils.fromTrustedString(newBox.getDescription())
,因为您相信newBox.getDescription()
安全。
作为旁注,我不明白为什么:
SafeHtmlBuilder
到append()
一次setInnerHTML
代替setInnerSafeHtml
(也许您没有使用GWT 2.5?)