我在GWT MVP视图中有一个CellTable,并且想要在一行上采取某些操作时通知演示者。例如,为一行提供弹出菜单,并选择一个动作(删除/编辑/等)。很明显,一个SelectionModel可以通过HasData获得,但我如何使用它来传回动作“动作”。
是否有可用于传回Presenter的标准接口(如HasData)?
答案 0 :(得分:0)
通常在GWT MVP View中公开一个可以注册事件处理程序的对象:通常以HasXyxHandlers
的形式出现,如HasClickHandlers
或HasChangeHandlers
。
如果是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选择模型。