Я використовую GWT з Структура GWTP в моїх проектах. До цих пір всі презентатори / перегляди типу singleton (одне виділене вікно для кожного типу реалізації). Тепер у мене є спеціальний (документ) вікно, де я хочу створити новий ведучий / перегляд (вікно) для кожного документа, який користувач хоче відкрити.
Клас GWTP com.gwtplatform.mvp.client.gin.AbstractPresenterModule
містить методи для зв'язування недінгтонних PresenterWidgets / Views, наприклад з фабрикою PresenterWidget;
Але я не можу знайти будь-яку документацію або приклади про це використання GWTP PresenterWidget фабрики. Як реалізувати цей завод PresenterWidget?
Відповіді:
1 для відповіді № 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 prototype)
public class MyPresenter extends PresenterWidget<MyPresenter.MyView>
Потім використовуйте com.google.inject.Provider get () для інстанції презентатора. При використанні PresenterWidget це призведе до декількох екземплярів. При використанні Ведуча повертається одиночний доповідач. Наприклад:
@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);
Сподіваюся, це допоможе