Создание экземпляра PresenterWidget (GWTP) вручную

я новичок в GWT, GWTP.

У меня есть PresenterWidget, который создается несколько раз и добавляется в слот. Я хочу определить количество экземпляров программно. Я только знаю, что я создаю новый экземпляр виджета, вводя его.

@Inject MyWidgetPresenter first; 
@Inject MyWidgetPresenter second; 
// ...

Могу ли я создать его с помощью new? как создать экземпляр представления?

Я попытался использовать композит, потому что это казалось самым умным решением, потому что в нем все равно не так много логики. Но я не могу добавить композит в слот.

заранее спасибо


person nsrlady    schedule 30.07.2013    source источник
comment
У меня точно такая же проблема, и я просто не понимаю, чего хочет от меня GWTP ^^   -  person Stefan Falk    schedule 12.03.2016


Ответы (2)


Вы можете получить ссылку ClientGinjector и вызвать метод getYourPresenter(). Если он объявлен как @Singleton, он вернет тот же экземпляр, если нет, будет создан новый экземпляр, такой же, как при использовании нового, но с вводом всех параметров в конструктор. Это будет то же самое, что добавить @Inject в поле.

Добавлено: если у вас нет нужного презентера на вашем ClientGinjector, вы можете просто написать метод получения на этом интерфейсе. Бывший:

public interface ClientGinjector extends Ginjector {
    ....
    SideMenuPresenter getSideMenuPresenter();
    ....
}
person André    schedule 30.07.2013
comment
Именно то, что я хотел! Большое спасибо! - person nsrlady; 30.07.2013
comment
Есть ли более приятный способ получить ссылку, чем передать ее конструктору? public MainPresenter (конечный EventBus eventBus, окончательный вид MyView, окончательный прокси-сервер MyProxy, PlaceManager placeManager, ginjector ClientGinjector) { ... } - person nsrlady; 30.07.2013
comment
ClientGinjector создается в EntryPoint. Я держу его в статической ссылке. Затем в любой момент я могу вызвать Injector.get(). Injector — это класс, который вы можете создать и который содержит ссылку на ClientGinjector. - person André; 30.07.2013

В GWTP 1.0 Ginjector больше не нужен (автоматически генерируется gwtp).

В вашем случае (и каждый раз, когда вам нужно несколько экземпляров класса) лучше всего внедрить Provider вашего WidgetPresenter:

@Inject Provider<MyWidgetPresenter> myWidgetPresenterProvider; 

Каждый раз, когда вам нужен новый экземпляр MyWidegetPresenter, вызывайте метод get() провайдера:

MyWidgetPresenter myWidgetPresenter = myWidgetPresenterProvider.get();
person jdramaix    schedule 31.07.2013
comment
Этот ответ должен быть идиоматическим решением! - person Mitrakov Artem; 24.11.2019