GWTP项目中的非单一PresenterWidgets / Views

时间:2018-03-13 13:43:28

标签: gwt gwtp gwt-platform

我在项目中使用GWT和GWTP framework。 到目前为止,所有演示者/视图的类型为singleton(每种实现类型的一个专用窗口)。现在我有一个特殊的(文档)窗口,我想为用户想要打开的每个文档创建一个新的演示者/视图(窗口)。

GWTP类com.gwtplatform.mvp.client.gin.AbstractPresenterModule包含用于绑定非单例PresenterWidgets / Views的方法,例如与PresenterWidget工厂绑定;

enter image description here

但我找不到有关此GWTP PresenterWidget工厂用法的任何文档或示例。我如何实现这个PresenterWidget工厂?

1 个答案:

答案 0 :(得分:1)

在实现自己的演示者类时,使用com.gwtplatform.mvp.client.PresenterWidget和com.gwtplatform.mvp.client.Presenter之间存在差异。

使用Presenter(带PresenterProxy)时,GWTP将演示者处理为单例。

public class MyPresenter extends Presenter<MyPresenter.MyView, MyPresenter.MyProxy>

使用PresenterWidget时,演示者将被多次实例化(如Spring原型范围)

public class MyPresenter extends PresenterWidget<MyPresenter.MyView>

然后使用com.google.inject.Provider get()来实例化演示者。使用PresenterWidget时,它将导致多个实例。使用Presenter时,将返回单例演示者。例如:

@Inject
MySecondPresenter(EventBus eventBus, MySecondView view, MySecondProxy proxy, Provider<MyPresenter> myProvider) {
    super(eventBus, view, proxy, RevealType.Root);
    setMyProvider(myProvider);
}

MyPresenter p = getMyProvider().get();
getView().addMyPresenter(p);

希望这有帮助