GWTP 项目中的非单例 PresenterWidgets/Views

non-singleton PresenterWidgets/Views in GWTP project

我在我的项目中使用 GWT 和 GWTP framework。 到目前为止,所有 presenters/views where 都是单例类型(每个实现类型都有一个专用的 window)。现在我有一个特殊的(文档)window,我想在其中为用户想要打开的每个文档创建一个新的 presenter/view(window)。

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

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

在实施您自己的演示者 类 时,使用 com.gwtplatform.mvp.client.PresenterWidget 和 com.gwtplatform.mvp.client.Presenter 是有区别的。

使用 Presenter(通过 PresenterProxy)时,GWTP 将 Presenter 作为单例处理。

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

使用 PresenterWidget 时,presenter 将被实例化多次(如 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);

希望对您有所帮助