2014-06-10 32 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

我想在演示者中儘可能多地保留邏輯。

回答

相關問題