2014-06-10 13 views
0

我有一个包含简单搜索表单的GWTP PresenterWidgetView对。GWT:将SubmitHandler添加到表单中,而不会将逻辑放在视图中

目前我通过调用我的ViewgetSearchForm()方法,这是不好的做法,因为它引用的,而不是一个接口的实际类添加SubmitHandler到窗体:

public class HeaderPresenter extends PresenterWidget<HeaderPresenter.MyView> 
{ 
    public interface MyView extends View 
    { 
     void submitForm(); 
     Form getSearchForm(); 
    } 

    // ...omitted for brevity 

    @Inject 
    public HeaderPresenter(EventBus eventBus, DispatchAsync dispatchAsync, MyView view, PlaceManager placeManager) 
    { 
     // ...omitted for brevity 
    } 

    @Override 
    protected void onBind() 
    { 
     super.onBind();   

     getView().getSearchForm().addSubmitHandler(new SubmitHandler() 
     { 
      @Override 
      public void onSubmit(SubmitEvent event) 
      { 
       // stops the form submission 
       event.cancel(); 

       // now we can do our stuff 
       String query = getView().getSearchQuery(); 

       if(query != "") // don't search for a blank string 
       { 
        PlaceRequest request = new PlaceRequest.Builder().nameToken(NameTokens.search).with("q", query).build(); 
        placeManager.revealPlace(request); 
       } 
      } 
     }); 
} 

有没有一种方式来增加SubmitHandlerHeaderPresenter,或者我必须把该代码放在View

我想在演示者中尽可能多地保留逻辑。

回答

相关问题