Search code examples
gwtuibinder

UiHandler doesn't work with SuggestBox SuggestionEvent


I am using a SuggestBox and trying to capture the SuggestionEvent that is fired when the user selects a Suggestion. I can do this with normal event handlers easily enough:

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

That works fine, event fires with the correct replacement string. However, I like to use UiHandler whenever possible due to how much cleaner the code is. So I've tried the following:

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

But this results in the following errors:

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


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

I have a different UiHandler working correctly on the same SuggestBox so I am kind of confused where I'm going wrong:

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

I don't understand why one UiHandler fires correctly, while the other results in a error.


Solution

  • SuggestionEvent does not extend GwtEvent instead it extends java.util.EventObject.

    This is why it will not work with UiBinder. I will bring this up on the GWT contributer list to see if there is a specific reason for this. Right now I am just guessing that it was forgotten when moving to the new event system.