GWT代码拆分。拆分的文件在一段时间内未加载
我有个问题。在大型GWT(2.4)中,我设计的应用程序使用了GWT代码拆分。GWT编译器裁剪了一个小js部件的应用程序 但是,当我想加载一些模块时GWT代码拆分。拆分的文件在一段时间内未加载,gwt,split,Gwt,Split,我有个问题。在大型GWT(2.4)中,我设计的应用程序使用了GWT代码拆分。GWT编译器裁剪了一个小js部件的应用程序 但是,当我想加载一些模块时 final Module form = ModuleFactory.getInstance().getModule(modumesName); /*/ M1扩展模块 当我第一次调用creating widget M1时,我得到了一个js错误 “Uncaught com.google.gwt.event.shared.umbralleexceptio
final Module form = ModuleFactory.getInstance().getModule(modumesName);
/*/
M1扩展模块
当我第一次调用creating widget M1时,我得到了一个js错误
“Uncaught com.google.gwt.event.shared.umbralleexception:捕获一个或多个异常,请参阅umbralleexception#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;
}
}
public类CreateModuleWidget扩展了复合{
私有静态最终绑定器Binder=GWT.create(Binder.class);
接口绑定器扩展UiBinder{}
公共CreateModuleWidget(){
/*initparams**/
}
@UiHandler(“createButt”)
创建单击时作废(单击事件){
字符串modumesName=“M1”;
最终WidgetDialog=新建WidgetDialog(moduleName,true);
最终模块形式=ModuleFactory.getInstance().getModule(modumesName);
setDialogWidget(表单);
dialog.show();
}
}
公共类ModuleFactory{
私有模块形式=null;
私有静态ModuleFactory实例=null;
公共静态ModuleFactory getInstance(){
if(实例==null){
实例=新的ModuleFactory();
}
返回实例;
}
公共模块getModule(字符串moduleName){
if(模数等于(“M1”)){
GWT.runAsync(新的RunAsyncCallback(){
@凌驾
成功时的公共无效(){
模块=GWT.create(M1.class);
}
@凌驾
失败时公共无效(可丢弃arg0){
窗口警报(“未加载M1”);
}
});
}
返回模块;
}
}
Uncaught com.google.gwt.event.shared.umbralleexception:捕获一个或多个异常,请参阅umbralleexception#getCauses BDC16B1A93B4190A8C1DD66EEF9838B8.cache.html:1435中的完整集
(匿名函数)好吧,你知道,之所以叫它
runAsync
,是因为它是a-同步的。通常我是在MVC中这样做的
控制器检查它需要的模块是否为空,如果为空,则加载该模块,然后在获得所需代码后进入视图
Module module;
if (module==null){
//You could display a waiting message in a dialog
GWT.runAsync(new RunAsyncCallback() {
...
public void onSuccess() {
module = GWT.create(M1.class);
showXYZView();
}
});
}else{
showXYZView();
}
请粘贴完整的stacktrace。谢谢!Im在开发模式下添加了完整的代码(使用gwt浏览器插件),一切都很好。但是,当我编译projet并部署到appserver上时,我的应用程序工作错误
Module module;
if (module==null){
//You could display a waiting message in a dialog
GWT.runAsync(new RunAsyncCallback() {
...
public void onSuccess() {
module = GWT.create(M1.class);
showXYZView();
}
});
}else{
showXYZView();
}