Understanding GWT onModuleLoad



看哪,我的第一个GWT应用程序的EntryPoint impl:

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 register(...)方法的调用显示为已弃用。为什么它被弃用,它应该是什么(从 GWT 2.5.1 开始(?
  2. 每个模块/EntryPoint是否有一个 RootPanel,或者每个GWT应用程序只有一个RootPanel(无论您有多少个模块(?
  3. 本身已添加到RootPanelmainPanel(上面(与传递到每个AbstractActivity#start方法中的AcceptsOneWidget之间的连接/关系是什么?
  1. 看这里: GWT 已弃用: PlaceHistoryHandler.register?
  2. 根面板很可能是<body>元素。所以正好有一个。
  3. 在大多数情况下,您将向RootPanel添加一个AcceptsOneWidget。您的Activity必须创建其视图并将其设置为传递给start() AcceptsOneWidget

查看 gwtproject.org 的活动和地点部分

1( 参见克里斯蒂安·库特巴赫的回答

2(在你的GWT应用程序中,你应该有一个MyModule.html文件。此文件已定义为 web.xml 文件中的欢迎文件。在这个文件中,您将看到它包含了应用程序MyModule.nocache的javascript版本.js(在gwt编译之后(。 克里斯蒂安所说的RootPanel是你的html页面。请注意,您可以使用 RootLayoutPanel 或 RootPanel,具体取决于是否要使用布局面板。

3( 使用活动和地点时,活动管理器会得到一个小部件容器。在这个小部件容器中,框架将在更改位置时放置新活动的视图。这就是

activityManager.setDisplay(mainPanel);

您是说当您从一个地方转到另一个地方时,对应于该地点的活动视图应该放在 mainPanel 中。

最新更新