2013-05-14 29 views
0

我很困惑,試圖瞭解如何捕獲UiBinder中SuggestionBox onchange()事件。GWT SuggestBox - > onChange事件

任何幫助,非常感謝。下面的代碼不起作用:

@UiHandler("singleRuleTemplateLeftSuggestBox") 
     void onChangeLeftOperand(ChangeEvent e) { 
      for (OperatorProxy operator : operatorValues) { 
       operatorSuggestions.add(operator.getOperatorName()); 
      } 
     } 

另一種嘗試:

singleRuleTemplateLeftSuggestBox.getValueBox().addChangeHandler(new ChangeHandler() { 

    @Override 
    public void onChange(ChangeEvent event) { 
     System.out.println(singleRuleTemplateLeftSuggestBox.getValue()); 
    } 
}); 

回答

1

SuggestBox沒有實現HasChangeHandlers接口(只有老棄用SourcesChangeEvents)。因此,您需要創建一個擴展SuggestBox,該擴展實現了將addChangeHandler()分配給內部ValueBoxBase<String>的接口,或者將ChangeHandler附加到ValueBoxBase<String>本身(通過suggestBox.getValueBox())。

+0

嗨我試過,並更新了我的問題中的代碼。但它似乎並不奏效。如果我在這裏做了任何錯誤,請幫助 – LPD 2013-05-14 16:18:47

+0

首先,您最好使用'Window.alert()'或者一個日誌工具(簡單地把'GWT.log()'),而不是依靠'System.out.println' 。其次,我想你可能不想使用DOM相關的ChangeEvent,而是使用GWT提供的ValueChangeEvent或SelectionEvent(都由'SuggestBox'支持)。在這種情況下,根據您的目的,只需更改您的第一個「UiBinder」片段即可使用它們。 – 2013-05-14 17:06:05