我有以下由UiBinder创建的元素:
@UiField UListElement phones;
使用以下标记:
<ul ui:field="phones" class="contact section"></ul>
我以前一直使用方法setInnerHtml(String)来设置值。例如:
phones.setInnerHtml("<li><span class='title'>" + title +
"</span><div class='phone'><a href='tel:" + number + "'>" +
number + "</a></div></li>");
我现在想使用SafeHtmlTemplates来减少出现XSS(跨站点脚本)问题的可能性。使用SafeHtmlTemplate,我现在回到SafeHtml,我想坚持我的phone元素变量。我该怎么做呢?我没有看到一个采用SafeHtml类型变量的方法。
答案 0 :(得分:1)
要使用SafeHtml
,您必须坚持使用GWT小部件。更具体:
随着com.google.gwt.safehtml包的引入,所有采用被解释为HTML的String参数的核心GWT库的小部件都使用带有SafeHtml类型值的相应方法进行了扩充。特别是,所有实现HasHTML(或HasDirectionalHtml)接口的小部件也实现了HasSafeHtml(或HasDirectionalSafeHtml)接口。
如果Ui:Binder应该生成安全的html,你必须在模块xml中设置以下属性:
<set-configuration-property name="UiBinder.useSafeHtmlTemplates" value="true" />