看哪,我的第一个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
的{{1}}方法的调用显示为已弃用。为什么它被弃用以及它应该是什么(从GWT 2.5.1开始)?register(...)
是否有一个RootPanel
,或者每个GWT应用只有一个EntryPoint
(无论如何你有很多模块)?RootPanel
(上方)已添加到mainPanel
的{{1}}与传递到每个RootPanel
方法的AcceptsOneWidget
之间的连接/关系是什么? ?提前致谢!
答案 0 :(得分:2)
<body>
元素。所以只有一个。AcceptsOneWidget
添加一个RootPanel
。您的Activity
必须创建其视图并将其设置为AcceptsOneWidget
传递给start()
答案 1 :(得分:0)
1)见Christian Kuetbach回答
2)在你的GWT应用程序中,你应该有一个MyModule.html文件。此文件已在web.xml文件中定义为欢迎文件。在这个文件里面你会看到你的应用程序MyModule.nocache.js的javascript版本(在gwt编译之后)。 Christian所说的RootPanel是你的html页面。请注意,如果要使用布局面板,可以使用RootLayoutPanel或RootPanel。
3)使用“活动和场所”时,活动管理器将获得一个小部件容器。在此小部件容器内,框架将在更改位置时放置新活动的视图。这就是
的含义activityManager.setDisplay(mainPanel);
您的意思是,当您从一个地方转到另一个地方时,与该地点对应的活动视图应放在mainPanel内。