Понимание GWT onModuleLoad

Вот, мое первое приложение GWT EntryPoint осущ:

public class MyModule implements EntryPoint {
    private SimplePanel mainPanel = new SimplePanel();

    @Override
    public void onModuleLoad() {
        // Extract all root-level dependencies from the injector.
        // Using Gin here.
        EventBus eventBus = injector.getEventBus();
        PlaceController placeController = injector.getPlaceController();
        SignInEventListener signInEventListener = injector.getSignInEventListener();
        PlaceHistoryMapper placeHistoryMapper = injector.getPlaceHistoryMapper();

        // Start the activity manager.
        activityManager = new ActivityManager(signInEventListener, eventBus);
        activityManager.setDisplay(mainPanel);

        // Start the place history mapper.
        placeHistoryHandler = new PlaceHistoryHandler(placeHistoryMapper);
        placeHistoryHandler.register(placeController, eventBus, startingPlace);

        // Add the main panel to the RootPanel.
        RootPanel.get().add(mainPanel);

        // Navigate to the place represented by the current URL, otherwise the startingPlace.
        placeHistoryHandler.handleCurrentHistory();
    }
}

Несколько вопросов:

  1. Мой звонок в placeHistoryHandler"s register(...) метод отображается как устаревший. Почему он устарел и каким он должен быть (по состоянию на GWT 2.5.1)?
  2. Есть ли один RootPanel за модуль /EntryPoint или есть только один RootPanel за приложение GWT (независимо от того, сколько у вас модулей)?
  3. Какова связь между mainPanel (выше), который сам был добавлен к RootPanelи AcceptsOneWidget который передается в каждый AbstractActivity#start метод?

Заранее спасибо!

2 ответа

Решение
  1. Посмотрите здесь: GWT устарел: PlaceHistoryHandler.register?
  2. RootPanel, скорее всего, <body> элемент. Так что есть ровно один.
  3. В большинстве случаев вы добавите один AcceptsOneWidget к RootPanel, Ваш Activity должен создать его вид и установить его в AcceptsOneWidget перешел к start()

Взгляните на раздел "Активность и места" на gwtproject.org.

1) См. Ответ Кристиана Кютбаха

2) В вашем приложении GWT у вас должен быть файл MyModule.html. Этот файл был определен как файл приветствия в вашем файле web.xml. Внутри этого файла вы увидите, что включена версия javascript вашего приложения MyModule.nocache.js (после компиляции gwt). RootPanel, как сказал Кристиан, является вашей HTML-страницей. Будьте осторожны, вы можете использовать RootLayoutPanel или RootPanel в зависимости от того, хотите ли вы использовать Layout Panels или нет.

3) При использовании "Деятельности" и "Места" Менеджеру активности присваивается контейнер виджетов. Внутри этого контейнера виджетов фреймворк будет отображать вид новой активности при смене места. В этом смысл

activityManager.setDisplay(mainPanel);

Вы говорите, что когда вы переходите из одного места в другое, представление активности, соответствующее этому месту, должно быть помещено в mainPanel.

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