Не-одиночные 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);

Надеюсь это поможет

Другие вопросы по тегам