【问题标题】:After upgrade: GWT 2.6.1 compiler fails with: Field has no 'addValueChangeHandler' method associated升级后:GWT 2.6.1 编译器失败:Field has no 'addValueChangeHandler' method associated
【发布时间】:2014-07-21 08:34:12
【问题描述】:

在我的应用程序中将 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&lt;String&gt; 实例,这对编译器来说似乎没问题。)枚举类型在 shared 包中.

我还发现了这个问题https://code.google.com/p/google-web-toolkit/issues/detail?id=6091,这似乎是相关的,但这应该在我升级到的版本中得到修复。

谢谢, 雷纳。

【问题讨论】:

    标签: gwt uibinder


    【解决方案1】:

    我找到了问题的根源——实际上是在我这边。

    问题是我的视图在SuggestValueBox&lt;T&gt; 上有多个实例,用于各种T,但对于所有这些实例,对于单个具体类型T,只有一个@UiHandler 方法

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

    如您所见,由于我没有使用 event 的内容,所以这在以前有效。

    每个具体类型都有一个onValueChange T 可以解决这个问题。

    【讨论】:

    • 其实之前是这样的,因为匹配是用原始类型完成的,而不是因为你没有使用事件的内容。
    • 你是对的。我应该说:我不关心类型,因为无论如何我都没有使用参数。 ;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-27
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    相关资源
    最近更新 更多