我正在尝试将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来解决这个问题,然后我会适当地设计样式,但我希望有一个更优雅的解决方案。
答案 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);
}