【发布时间】:2014-04-07 14:32:10
【问题描述】:
简而言之问题:我有两个模块继承了一个公共模块(没有入口点)和一个主机页面。无论它加载哪个,它都会在页面上同时加载两者。 我只是希望它们单独加载并显示自己,而不是在所有页面中一起显示..
当我启动 Login.html 时,它会启动这两个模块(它们垂直共享浏览器空间)并加载正确的入口点(登录扩展入口点)两次。
当我启动 Main.html 时,它会以 Main 入口点启动这两个模块...
我怀疑项目结构有问题,但我们不想仅仅因为模块而将一个项目/应用程序拆分为多个项目。
登录:
<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='Login'>
<inherits name='fqdn.Common' />
<stylesheet src='../Common.css' />
<!-- Specify the app entry point class. -->
<entry-point class='fqdn.Login' />
<module>
主要:
<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='Main>
<inherits name='fqdn.Common' />
<stylesheet src='../Common.css' />
<!-- Specify the app entry point class. -->
<entry-point class='fqdn.Main' />
<module>
Login.html:
<html>
<head>
<link type="text/css" rel="stylesheet" href="css/Common.css">
<script type="text/javascript" language="javascript" src="Login/Login.nocache.js"></script>
</head>
<body>
...
</body>
</html>
Main.html:
<html>
<head>
<link type="text/css" rel="stylesheet" href="css/Common.css">
<script type="text/javascript" language="javascript" src="Main/Main.nocache.js"></script>
</head>
<body>
...
</body>
</html>
我不得不承认,两个入口点共享相同的目录和许多类,但不是相同的 Ginjector 东西。 它们被命名为 myproject.client.Login 和 myproject.client.Main。
这是 GWT 失败的原因吗?我很高兴知道针对这种情况的良好修复或解决方法:)
更新:添加 Main.java sn-ps
public class Main implements EntryPoint {
private Logger logger = Logger.getLogger(Main.class.getName());
private final GinMainInjector injector = GinMainInjector.INSTANCE;
private Place defaultPlace = GWT.create(TicketPlace.class);
private SimplePanel appWidget;
private EventBus eventBus;
public void onModuleLoad() {
logger.finest("Starting Main...");
eventBus = injector.getEventBus();
MainActivityMapper activityMapper = GWT.create(MainActivityMapper.class);
activityMapper.insertInjector(injector);
PlaceController placeController = injector.getPlaceController();
createAppWidgetPanel();
startActivityManager(activityMapper, eventBus);
startHistoryHandler(placeController, eventBus);
}
private void startActivityManager(ActivityMapper activityMapper, EventBus eventBus) {
ActivityManager activityManager = new ActivityManager(activityMapper, eventBus);
activityManager.setDisplay(appWidget);
RootLayoutPanel.get().clear();
RootLayoutPanel.get().add(appWidget);
}
}
【问题讨论】:
-
请您分享一些
fqdn.Main和fqdn.Login的代码,您将在其中添加顶级组件。我想知道我是否在页面上添加/显示Composite/SimplePanel? -
我更新了它并添加了 Main.java(Main 和 Login 看起来完全一样)
标签: java gwt module entry-point