如何使用类型为NavSearch等自定义小部件的typeahead

时间:2013-07-24 10:36:05

标签: gwt-bootstrap

我正在尝试将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)时在编译时引起的。

我已经能够通过切换TextBox的navsearch来解决这个问题,然后我会适当地设计样式,但我希望有一个更优雅的解决方案。

1 个答案:

答案 0 :(得分:1)

Typeahead的setWidget专门检查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);
}