UiHandler不适用于SuggestBox SuggestionEvent

时间:2012-07-13 14:41:22

标签: gwt uibinder

我正在使用SuggestBox并尝试捕获当用户选择Suggestion时触发的SuggestionEvent。我可以很容易地使用普通的事件处理程序来完成这个任务:

itemInputBox.addEventHandler(new SuggestionHandler() {
            @Override
            public void onSuggestionSelect(SuggestionEvent event) {
                Window.alert(event.getSelectedSuggestion().getReplacementString());         
            }           
        });

工作正常,事件使用正确的替换字符串触发。但是,我喜欢尽可能使用UiHandler,因为代码更清晰。所以我尝试了以下内容:

@UiHandler("itemInputBox")
    void onSuggestionSelect(SuggestionEvent event) {
        Window.alert(event.getSelectedSuggestion().getReplacementString());
    }

但是这会导致以下错误:

[WARN] [jsonp] - Method 'getAssociatedType()' could not be found in the event 'SuggestionEvent'.


[ERROR] [jsonp] - Parameter 'SuggestionEvent' is not an event (subclass of GwtEvent).

我有一个不同的UiHandler在同一个SuggestBox上正常工作,所以我有点困惑我错了:

@UiHandler("itemInputBox")
    void onKeyUp(KeyUpEvent event) {
            Window.alert("Key up event firing.");
    }

我不明白为什么一个UiHandler正确触发,而另一个导致错误。

1 个答案:

答案 0 :(得分:2)

SuggestionEvent不扩展GwtEvent,而是扩展java.util.EventObject。

这就是为什么它不适用于UiBinder。我将在GWT贡献者列表上提出这一点,看看是否有具体原因。现在我只是猜测它在移动到新的事件系统时被遗忘了。