Как установить внутренний HTML-код элемента GWT UiBinder, используя SafeHTML вместо String? - PullRequest
0 голосов
/ 30 августа 2011

У меня есть следующий элемент, созданный 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, который я хотел бы вставить в переменную моего телефона. Как мне это сделать? Я не вижу метода, который бы принимал переменную типа SafeHtml.

1 Ответ

1 голос
/ 30 августа 2011

Чтобы использовать SafeHtml, вы должны придерживаться виджетов GWT. Более конкретно:

С введением пакета com.google.gwt.safehtml все виджеты базовой библиотеки GWT, которые принимают аргументы String, которые интерпретируются как HTML, были дополнены соответствующими методами, которые принимают значение типа SafeHtml. В частности, все виджеты, которые реализуют интерфейс HasHTML (или HasDirectionalHtml), также реализуют интерфейс HasSafeHtml (или HasDirectionalSafeHtml, соответственно).

Если Ui: Binder должен генерировать безопасный HTML, вы должны установить следующее свойство в вашем модуле xml:

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