Как использовать typeahead с пользовательскими виджетами, такими как NavSearch
Я пытаюсь подключить виджет typeahead к NavSearch. Я хотел бы сделать:
<b:Typeahead ui:field="typeahead">
<b:NavSearch ui:field="navSearch"></b:NavSearch>
</b:Typeahead>
А потом позвони typeahead.setWidget(navsearch.getTextBox())
но он выдает ошибку "Typeahead должен быть установлен в TextBoxBase childs". Я понимаю, что это вызвано во время компиляции, когда я вызываю ui_binder.createAndBindUi(this)
,
Я смог обойти это, переключив navsearch для TextBox
который я тогда стилизовал соответственно, но я надеялся на более изящное решение.
1 ответ
Решение
SetWidget Typeahead специально проверяет виджет типа TextBoxBase, так что я думаю, что альтернативы нет!! Грустно, но реальность!
public void setWidget(Widget w) {
if (!(w instanceof TextBoxBase || w instanceof com.google.gwt.user.client.ui.TextBoxBase)) {
throw new IllegalArgumentException("Typeahead should be set TextBoxBase childs");
}
super.setWidget(w);
}