Не-одиночные PresenterWidgets/ Представления в проекте GWTP
Я использую GWT с платформой GWTP в своих проектах. До сих пор все докладчики / представления имеют тип синглтон (одно выделенное окно для каждого типа реализации). Теперь у меня есть специальное окно (документ), в котором я хочу создать новый докладчик / представление (окно) для каждого документа, который пользователь хочет открыть.
GWTP класс com.gwtplatform.mvp.client.gin.AbstractPresenterModule
содержит методы для привязки не-одиночных PresenterWidgets/Views, например, с фабрикой PresenterWidget;
Но я не могу найти какую-либо документацию или примеры об использовании фабрики GWTP PresenterWidget. Как реализовать фабрики PresenterWidget?
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 возвращается одиночный 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);
Надеюсь это поможет