我在GWT MVP视图中拥有CellTable,并且希望在行上执行某些操作时通知主持人。例如,为一行提供了一个弹出式菜单,并选择了一个动作(删除/编辑/等)。显然有一个可以通过HasData获得的SelectionModel,但是我将如何使用这个来传回action的动作。MVP,将行事件传递回主持人的最佳做法
是否有一个标准的接口(如HasData),我可以用它来传递给Presenter?
我在GWT MVP视图中拥有CellTable,并且希望在行上执行某些操作时通知主持人。例如,为一行提供了一个弹出式菜单,并选择了一个动作(删除/编辑/等)。显然有一个可以通过HasData获得的SelectionModel,但是我将如何使用这个来传回action的动作。MVP,将行事件传递回主持人的最佳做法
是否有一个标准的接口(如HasData),我可以用它来传递给Presenter?
通常在GWT中,MVP View公开了一个可以注册事件处理程序的对象:通常是HasXyxHandlers
的形式,如HasClickHandlers
或HasChangeHandlers
。
在CellTable的情况下,它的命名方式不同:SelectionModel
。在查看刚刚实施,返回它的方法:
SelectionModel<YourClass> getSelectionModel();
然后演示者调用此方法并将自身注册为:
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
}
});
更多这方面的思考,我可能会超过工程它。如果我在视图中重复使用了一个弹出式菜单,并让演示者在菜单(而不是CellList)上监听点击事件,则可以通过按钮的处理程序查询CellList选择模型。
谢谢。我可以通过hasData接口访问SelectionModel,我正在注册事件。但是,我想知道用户真正想要做什么选择。例如,用户点击行并弹出菜单。用户选择其中一个选项(属性,下载,删除...),此时我希望我的演示者被告知有关选择。 – Dan 2011-03-15 21:26:09
您的示例中的代码无法编译,因为getSelectedObject()方法仅在SingleSelectionModel上定义。 – CoolMcGrrr 2011-07-22 11:38:46
然后使用'MultiSelectionModel'并调用'getSelectedSet()'。 – 2011-07-22 11:53:17