我有个问题。在大型 GWT(2.4)-app 中,我决定使用 gwt-code-splitting。GWT-compiller 为一个小的 js-parts 裁剪了应用程序。
但是,当我想加载一些模块时
final Module form = ModuleFactory.getInstance().getModule(modumesName);
/ * /
private Module module = null;
public Module getModule(String moduleName){
if (moduleName.equals("M1")) {
GWT.runAsync(new RunAsyncCallback() {
@Override
public void onSuccess() {
module = GWT.create(M1.class);
}
@Override
public void onFailure(Throwable arg0) {
Window.alert("not load M1");
}
});
}
return module;
}
M1扩展模块
当我第一次调用创建小部件 M1 时,出现 js 错误
“未捕获的 com.google.gwt.event.shared.UmbrellaException:捕获到一个或多个异常,请参阅 UmbrellaException#getCauses 中的完整集”
但是,在其他时间,我得到了我的模块 M1。在我看到的开发工具中,加载了拆分部分。
public class CreateModuleWidget extends Composite{
private static final Binder binder = GWT.create(Binder.class);
interface Binder extends UiBinder<Widget, CreateModuleWidget> {}
public CreateModuleWidget() {
/*initparams**/
}
@UiHandler("createButt")
void onCreateClick(ClickEvent event) {
String modumesName = "M1";
final WidgetDialog dialog = new WidgetDialog(moduleName, true);
final Module form = ModuleFactory.getInstance().getModule(modumesName);
dialog.setDialogWidget(form);
dialog.show();
}
}
public class ModuleFactory{
private Module form = null;
private static ModuleFactory instance = null;
public static ModuleFactory getInstance(){
if(instance == null){
instance = new ModuleFactory();
}
return instance;
}
public Module getModule(String moduleName){
if (moduleName.equals("M1")) {
GWT.runAsync(new RunAsyncCallback() {
@Override
public void onSuccess() {
module = GWT.create(M1.class);
}
@Override
public void onFailure(Throwable arg0) {
Window.alert("not load M1");
}
});
}
return module;
}
}
未捕获的 com.google.gwt.event.shared.UmbrellaException:捕获到一个或多个异常,请参阅 UmbrellaException#getCauses BDC16B1A93B4190A8C1DD66EEF9838B8.cache.html:1435 中的完整集(匿名函数)