在我的应用程序中将GWT从2.5.1升级到2.6.1后,我为特定的自我实现的复合小部件收到了几个GWT编译器错误。
对于包含此小部件的视图,它说:
Rebinding com.myapp.client.page.FilterPanel.Binder
[java] Invoking generator com.google.gwt.uibinder.rebind.UiBinderGenerator
[ERROR] Field 'statusBox' does not have an 'addValueChangeHandler' method associated.
[ERROR] Errors in 'gen/com/myapp/client/page/com_myapp_client_config_MyAppGinjector_MyappGinjectorGinjector_fragment.java'
该字段是包含TextBox
和DefaultMultiWordSuggestBox
public class SuggestValueBox<T> extends Composite implements HasConstrainedValue<T> {
...
@Override
public HandlerRegistration addValueChangeHandler(ValueChangeHandler<T> handler) {
return addHandler(handler, ValueChangeEvent.getType());
}
}
因此,我认为该领域有这样一种方法。
如果泛型类型T
是一个枚举,那么编译器似乎只会失败(同一个视图也有SuggestValueBox<String>
个实例,这对编译器来说似乎没问题。)枚举类型在shared
包。
我还发现此问题https://code.google.com/p/google-web-toolkit/issues/detail?id=6091似乎有关,但这应该在我升级到的版本中修复。
谢谢, 赖。
答案 0 :(得分:1)
我找到了问题的根源 - 实际上就在我身边。
问题在于,我的视图在SuggestValueBox<T>
上针对各种T
有多个实例,但对于单个具体类型@UiHandler
<所有这些实例只有一个T
方法/ p>
@UiHandler({"fieldForTypeA", "fieldForTypeB"})
public void onValueChange(@SuppressWarnings("unused") ValueChangeEvent<TypeA> event) {
this.submit();
}
如您所见,这之前有效,因为我没有使用event
。
对每种具体类型onValueChange
设置T
可解决此问题。