2014-10-29 208 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我很惭愧自己