升级后:GWT 2.6.1编译器失败:字段没有关联的“addValueChangeHandler”方法

时间:2014-07-21 08:34:13

标签: gwt uibinder

在我的应用程序中将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'

该字段是包含TextBoxDefaultMultiWordSuggestBox

的通用建议框
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似乎有关,但这应该在我升级到的版本中修复。

谢谢, 赖。

1 个答案:

答案 0 :(得分:1)

我找到了问题的根源 - 实际上就在我身边。

问题在于,我的视图在SuggestValueBox<T>上针对各种T有多个实例,但对于单个具体类型@UiHandler <所有这些实例只有一个T方法/ p>

@UiHandler({"fieldForTypeA", "fieldForTypeB"})
public void onValueChange(@SuppressWarnings("unused") ValueChangeEvent<TypeA> event) {
    this.submit();
}

如您所见,这之前有效,因为我没有使用event

的内容

对每种具体类型onValueChange设置T可解决此问题。