【问题标题】:How to fire a onSelection event from the custom widget to the uibinder如何从自定义小部件向 uibinder 触发 onSelection 事件
【发布时间】:2012-11-16 23:59:48
【问题描述】:

我使用 uibinder 创建了一个自定义 SuggestBox,并在使用 uibinder 的视图中使用它。

我的问题是无法将 onSelection 事件触发到我使用自定义建议框的视图

下面是我的代码。

MySuggestBox.ui.xml

<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<ui:style>

</ui:style>
<g:SuggestBox ui:field="suggestionBox"></g:SuggestBox>
</ui:UiBinder> 

MySuggestBox.java

public class MySuggestBox extends Composite implements IsWidget, HasSelectionHandlers<Suggestion>{

    private static mySuggestBoxUiBinder uiBinder = GWT
        .create(mySuggestBoxUiBinder.class);

    interface MySuggestBoxUiBinder extends
        UiBinder<Widget, MySuggestBox> {
    }

   @UiField SuggestBox suggestionBox;
   public mySuggestBox(){
       initWidget(uiBinder.createAndBindUi(this));
   }

   @Override
   public HandlerRegistration addSelectionHandler(SelectionHandler<Suggestion> handler)  {
      return addHandler(handler, SelectionEvent.getType());
   }
    ...
    ...
    ...

}

我在这里使用上面的小部件

MySuggestBoxExample.ui.xml

<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui
    xmlns:my="urn:import:com.myproject.mywidget">
<ui:style>

</ui:style>
<my:MySuggestBox ui:field="suggestBox" />
</ui:UiBinder> 

MySuggestBoxExample.java

public class MySuggestBoxExample extends Composite implements IsWidget{

    private static mySuggestBoxExampleUiBinder uiBinder = GWT
        .create(mySuggestBoxExampleUiBinder.class);

    interface MySuggestBoxExampleUiBinder extends
        UiBinder<Widget, MySuggestBoxExample> {
    }

   @UiField MySuggestBox suggestBox;
   public MySuggestBoxExample (){
       initWidget(uiBinder.createAndBindUi(this));
   }

   @UiHandler("suggestBox")
   public void onSelection(SelectionEvent<Suggestion> event){
      //I DONT GET THIS EXECUTED
   }
    ...
    ...
    ...

}

我没有触发 onSelecion 方法。

请帮忙。

【问题讨论】:

    标签: gwt widget custom-component uibinder suggestbox


    【解决方案1】:

    您的 MySuggestBox 不会将 SelectionHandler 添加到实际的 SuggestBox 中,而是将其添加到 Composite 中。当 SuggestBox 触发时,它不会找到添加到您的建议框中的处理程序。您可以通过将 MySuggestBox 中的处理程序添加到实际的建议框字段来修复它:

    @Override
    public HandlerRegistration addSelectionHandler(SelectionHandler<Suggestion> handler)  {
      return suggestionBox.addSelectionHandler(handler);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-09
      • 1970-01-01
      相关资源
      最近更新 更多