GWT模板& GXT Xtemplates - 如何清理显示字段

时间:2013-02-14 18:02:49

标签: gwt gxt

我刚刚在我的代码中使用@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 doc

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

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

1 个答案:

答案 0 :(得分:1)

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

可以传入

SafeHtml个实例来声明'我知道这个字符串是安全的'。通常,您使用SafeHtmlUtilsSafeHtmlBuilder实例或某种其他模板创建这些实例。

安全网址可以是SafeUri个实例 - 使用UriUtils创建它们。这将在您的第一个示例中解决可能的警告。

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

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