我正在使用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正确触发,而另一个导致错误。
答案 0 :(得分:2)
SuggestionEvent不扩展GwtEvent,而是扩展java.util.EventObject。
这就是为什么它不适用于UiBinder。我将在GWT贡献者列表上提出这一点,看看是否有具体原因。现在我只是猜测它在移动到新的事件系统时被遗忘了。