2011-08-30 75 views
0

我具有由UiBinder的創建了以下元件:如何使用SafeHTML而不是String來設置GWT UiBinder元素的內部HTML?

@UiField UListElement phones; 

隨着以下標記:

<ul ui:field="phones" class="contact section"></ul> 

我已使用該方法setInnerHtml(字符串)要設置的值以前一直。例如:

phones.setInnerHtml("<li><span class='title'>" + title + 
    "</span><div class='phone'><a href='tel:" + number + "'>" + 
    number + "</a></div></li>"); 

我現在想用SafeHtmlTemplates減少有XSS(跨站腳本)的問題的可能性。使用SafeHtmlTemplate,我現在可以取回SafeHtml,我想將其放入我的手機元素變量中。我該怎麼做呢?我沒有看到採用SafeHtml類型變量的方法。

回答

1

要使用SafeHtml你必須堅持GWT的小部件。更具體:

通過引入com.google.gwt.safehtml包,所有的核心GWT庫的小工具,採取被解釋爲HTML字符串參數都加以擴充與採取SafeHtml-相應的方法鍵入的值。特別是,實現HasHTML(或HasDirectionalHtml)接口的所有小部件也都實現了HasSafeHtml(或分別爲HasDirectionalSafeHtml)接口。

如果UI:粘合劑應產生安全的HTML,你必須設置以下屬性在你的模塊XML:

<set-configuration-property name="UiBinder.useSafeHtmlTemplates" value="true" /> 
+0

是的,我想我不能設置HTML元素上不是通過任何其他方式setInnerHtml。我只需要在任何地方使用setInnerHtml進行審計。我只會使用:phones.setInnerHtml(safeHtml.asString()); – 11101101b

相關問題