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);
希望对您有所帮助
我在我的项目中使用 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);
希望对您有所帮助