MVP,将行事件传递回演示者的最佳实践

时间:2011-03-15 17:40:02

标签: gwt mvp

我在GWT MVP视图中有一个CellTable,并且想要在一行上采取某些操作时通知演示者。例如,为一行提供弹出菜单,并选择一个动作(删除/编辑/等)。很明显,一个SelectionModel可以通过HasData获得,但我如何使用它来传回动作“动作”。

是否有可用于传回Presenter的标准接口(如HasData)?

2 个答案:

答案 0 :(得分:0)

通常在GWT MVP View中公开一个可以注册事件处理程序的对象:通常以HasXyxHandlers的形式出现,如HasClickHandlersHasChangeHandlers

如果是CellTable,它的名称不同:SelectionModel。只需在View中实现一个返回它的方法:

SelectionModel<YourClass> getSelectionModel();

然后Presenter调用此方法并注册自己:

final SelectionModel<YourClass> selectionModel = view.getSelectionModel();
selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
    @Override
    public void onSelectionChange(SelectionChangeEvent event) {
        YourClass selectedObject = selectionModel.getSelectedObject();
        // do something with selectedObject  
    }
});

答案 1 :(得分:0)

考虑到这一点,我可能会过度设计它。如果我有一个我在视图中重复使用的弹出菜单,并让演示者在菜单上听取单击事件(而不是CellList),那么我可以在按钮的处理程序中查询CellList选择模型。