2014-10-29 259 views
0

過去幾個月我一直在學GWT,發現Mvp是設計項目的最佳方法之一。我已閱讀谷歌的教程MVP part 1 ,並在他們的教程中,他們將clickHandlers(例如)放在演示者中。 現在我遇到了這樣的問題,當構建許多具有相同的HTML id,許多按鈕,然後用戶與這些按鈕進行交互的視圖類...所以如果我有一個按鈕爲每個視圖,總共6按鈕。並且用戶點擊其中一個,該按鈕將爲同一對象工作6次... 因此,我閱讀並發現,最好將處理程序放在視圖類上併爲演示者創建一個事件。GWT Mvp和處理程序

所以這就是我所做的:

視圖類:

  rb0.addClickHandler(new ClickHandler() { 

      @Override 
      public void onClick(ClickEvent event) { 

       selectHandler.onEvent(1); 
       System.out.print("rate 1"); 
      } 
     }); 
     rb1.addClickHandler(new ClickHandler() { 

       @Override 
       public void onClick(ClickEvent event) { 

        selectHandler.onEvent(2); 
        System.out.print("rate 2"); 
       } 
      }); 

     rb1.addClickHandler(new ClickHandler() { 

       @Override 
       public void onClick(ClickEvent event) { 

        selectHandler.onEvent(3); 
        System.out.print("rate 3"); 
       } 
      }); 

     rb1.addClickHandler(new ClickHandler() { 

       @Override 
       public void onClick(ClickEvent event) { 

        selectHandler.onEvent(4); 
        System.out.print("rate 4"); 
       } 
      }); 

     rb1.addClickHandler(new ClickHandler() { 

       @Override 
       public void onClick(ClickEvent event) { 

        selectHandler.onEvent(5); 
        System.out.print("rate 5"); 
       } 
      }); 

主持人類:(事件處理程序)

private void bind() { 
     . 
     . 
     . 

     DoEvent selectHandler = new DoEvent(){ 
       public void onEvent(int select) { 
        fetchRating(select, user.getUserId()); 

       } 
      };  
      display.setSelectHandler(selectHandler); 

與它的觀點,這就是所謂的呼籲演示來自MainPagePresenter類:

 presenter = new AssetViewPresenter(rpcService,eventBus,new AssetView(),result.get(i)); 

現在我的問題是,當我從視圖中點擊按鈕什麼也沒有發生...像主持人和視圖沒有連接,可能是什麼問題?

回答

0

對不起,這是一個愚蠢的錯誤...我的按鈕是rb0,rb1,rb2 ...我用相同的按鈕ID複製點擊處理程序! YUP我很慚愧自己