过去几个月我一直在学习GWT,并发现Mvp是设计项目的最佳方式之一。我看过google的教程MVP part 1 在他们的教程中,他们将clickHandlers(例如)放在演示者中。 现在我在构建许多具有相同HTML id的按钮的视图类时遇到了问题,然后用户与这些按钮进行交互...所以如果每个视图都有一个按钮,则总共有6个按钮。并且用户点击其中一个,该按钮将对同一个对象工作6次... 所以我读到并发现最好将处理程序放在视图类上并向演示者创建一个事件。
所以我做了什么:
查看课程:
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");
}
});
Presenter类:(事件处理程序)
private void bind() {
.
.
.
DoEvent selectHandler = new DoEvent(){
public void onEvent(int select) {
fetchRating(select, user.getUserId());
}
};
display.setSelectHandler(selectHandler);
使用它的视图调用Presenter,它是从MainPagePresenter类调用的:
presenter = new AssetViewPresenter(rpcService,eventBus,new AssetView(),result.get(i));
现在我的问题是,当我从视图中单击按钮时没有任何反应...就像演示者和视图没有连接一样,可能是什么问题?
答案 0 :(得分:0)
很抱歉这是一个愚蠢的错误...我的按钮是rb0,rb1,rb2 ......我复制了具有相同按钮ID的点击处理程序!是的,我为自己感到羞耻