看哪,我的第一个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();
}
}
几个问题:
- 我对
placeHistoryHandler
register(...)
方法的调用显示为已弃用。为什么它被弃用,它应该是什么(从 GWT 2.5.1 开始(? - 每个模块/
EntryPoint
是否有一个RootPanel
,或者每个GWT应用程序只有一个RootPanel
(无论您有多少个模块(? - 本身已添加到
RootPanel
的mainPanel
(上面(与传递到每个AbstractActivity#start
方法中的AcceptsOneWidget
之间的连接/关系是什么?
- 看这里: GWT 已弃用: PlaceHistoryHandler.register?
- 根面板很可能是
<body>
元素。所以正好有一个。 - 在大多数情况下,您将向
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 中。