GWT MVP。怎么用事件总线?

时间:2012-02-15 10:03:18

标签: java gwt

在项目中我使用MVP模式。我有2个视图和2个相应的演示者。从“Presenter2”我想在“View1”中获取所选值。最好的方法是什么?我知道最好使用事件总线。但所以我必须创建2个事件和2个事件处理程序(当Presenter2需要从View1中选择值时,第一个事件将会上升,并且它将在Presenter1.中处理。第二个事件将在Presenter1中上升(例如:new selectedValueEvent(value)以证明Presenter2有关选定的值。因此,Presenter2将处理selectedValueEvent(value)并获取value)。

1 个答案:

答案 0 :(得分:1)

如果演示者需要获取所选值的时间点是用户进行操作时您将无法使用事件。 (尽管如此,也许两位主持人都可以对同一事件作出反应,所以不需要使用两种不同的事件吗?)

如果知道演示者何时需要获取值(工作流中已定义的步骤),您可以这样:

ClientFactory

中保留对视图的引用
public class ClientFactoryImpl implements ClientFactory {
    private static final EventBus eventBus = new SimpleEventBus();
    /* The views */
    private static final SampleView sampleView = new SampleView(); 
    ....

    public ClientFactoryImpl(){
        eventBus.addHandler(ReleaseAddedEvent.type, sampleView);
        ....
    }


    // getter and setters
}

因此,在Presenter中,您可以获得对视图的引用:SampleView view = MyEntryPoint.getClientFactory().getSampleView();然后您可以从视图中调用返回所选值的方法。