2012-04-26 2 views
0

, какие комбинации Widget/Template и ClientBundleare разрешены, и есть ли какие-либо известные ограничения/вещи, которые вы должны учитывать при их использовании.GWT: Widget/Template и ClientBundle

AFAIK что-то вроде:

@Template(""{0}\"<p>not allowed</p>") 
SafeHtml iconONLY(Widget w); 

не допускается, так как он выдает ошибку.

Что-то вроде

@Template("{0}<p>not allowed</p>") 
SafeHtml iconONLY(Element e); 

и использовать его с чем-то вроде iconONLY(w.getElement()); возможно, но виджет теряет все функциональные возможности, потому что это метод Атташе не выполняется правильно.

Чтобы подвести итог, я предполагаю, что шаблоны не предназначены для размещения в них виджетами!

ClientBundle предназначен для хранения содержимого Виджеты. С их помощью внутри других элементов например: как

@Template("{0}<p>not allowed</p>") 
SafeHtml iconONLY(SafeUrl safeurl); 

вызываемого с iconONLYimageResource.getSafeUrl); может вызвать проблемы ...

ли мои предположения правильно? Скажите, пожалуйста, если вы попробовали/использовали одну из комбинаций и как она работала?

ответ

1

Первое и второе имеют смысл, что они не работают, поскольку вы пытаетесь вставить только элемент или виджет в строку (SafeHtml - это в конце дня только строка) - конечно, проводка событий не будет работать. Виджеты не могут быть клонированы таким образом, для них есть больше, чем просто элемент, из которого они сделаны.

Последняя ошибка, потому что вы ставите Ури в текстовое содержание - Вы, вероятно, означает что-то вроде

@Template("<img src=\"{0}\" /><p>not allowed</p>") 
SafeHtml iconONLY(SafeUri safeurl); 

для отображения изображения.

Что вы пытаетесь сделать? Если пытаться отобразить изображение, поставив SafeUri в img теге один вариант, другой бы собрать SafeHtml экземпляр для вставки:

@Template("{0}<p>not allowed<p>") 
SafeHtml iconONLY(SafeHtml icon); 

//... 
AbstractImagePrototype proto = AbstractImagePrototype.create(icon); 
SafeHtml iconHtml = SafeHtmlUtils.fromTrustedString(proto.getHTML()); 
template.iconONLY(iconHtml); 

Основная идея SafeHtml является то, что вы строите строки HTML вместо элементов dom - это позволяет повторно использовать эти строки или все сразу вводить (что обычно быстрее, чем добавлять элементы к dom) - это не то, как добавляются виджеты друг к другу, и пытается манипулировать такими виджетами, как как вы заметили.

Смежные вопросы