Как использовать 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);
}
Другие вопросы по тегам