1

我刚刚开始在我的代码中使用@Template 和@XTemmplate。我总是关心用户原创内容与受信任的内容。

这是来自 GWT SafeHtml的示例

 public interface MyTemplates extends SafeHtmlTemplates {
    @Template("<span class=\"{3}\">{0}: <a href=\"{1}\">{2}</a></span>")
    SafeHtml messageWithLink(SafeHtml message, String url, String linkText,
        String style);
  }

这是来自 GXT XTemplate 文档的示例

public interface SampleXTemplates extends XTemplates {
  @XTemplate("<div>Hello, {name}!</div>")
  SafeHtml hello(String name);
}

在这两种方法中,模板中是否有一种方法可以声明要清理或信任的显示字段?一些 ala HtmlSanitizer

4

1 回答 1

1

String在 XTemplate/SafeHtmlTemplates 中呈现的所有值都会自动清理 - 尝试传入<>&字符。无论它们是传递给属性还是标签之间的空间都是如此。如果 GWT 无法确保此类字符串的安全性(例如将其传递到标记的属性或href属性中),它将发出警告。你的第一个例子很可能会得到这样的警告。astyle

SafeHtml可以传入实例来声明“我知道这个字符串是安全的”。通常,您使用SafeHtmlUtilsSafeHtmlBuilder实例或其他某种模板来创建它们。

安全 url 可以是SafeUri实例 - 使用UriUtils. 这将绕过您的第一个示例中可能出现的警告。

安全样式可以是实例——使用类中的实例或静态方法SafeStyles创建它们。SafeStylesBuilderSafeStylesUtils

最后,作为一个实现细节,XTemplates 是通过解析逻辑和命名参数和 getter 生成的,并在生成 JavaScript 之前转换为 SafeHtmlTemplates。这确保了 SafeHtmlTemplates 将确保安全的任何内容在 XTemplates 中也是安全的。

于 2013-02-14T22:21:55.110 回答