我将GWT代码分成不同的模块,如
PrintPermit.gwt.xml
EmployeeResponse.gwt.xml
Rejected.gwt.xml
并且每个模块都有自己的入口点类
在我的HTML主页中,我正在调用脚本,如
ae.init.EmployeeResponse.nocache.js
我有一个像
这样的菜单打印应用程序
拒绝申请
新申请
每当用户点击new application
默认新应用程序将会打开
当我在我的HTML主页中静态声明EmployeeResponse.nocache.js
时。
现在我想通过点击按钮print and reject button
如何调用nocache js来打印和拒绝模块。有没有办法动态调用。 请帮帮我们。
答案 0 :(得分:1)
以下是我过去做过的事情:
@JsType
的自由使用来实现;这是导出JS的新方法,可在GWT 2.8中使用(与JSNI相反)。onModuleLoad
可以为空;它不需要做任何事情。请注意GWT JS加载的异步性质;您的库将以异步方式加载,就像任何JS应用程序一样(因此,当您的页面加载时,它将立即立即)。为了解决这个问题,我在我的库的onModuleLoad
函数中调用了一个本机JS函数(即确保你通知任何潜在的监听器代码已加载;因为当{{ 1}}运行,代码肯定加载了。
答案 1 :(得分:1)
有一个InterAppEventBus的例子:
https://github.com/sambathl/interapp-eventbus
显示了两个GWT应用程序之间的通信。 我采用了它并用Elemental2和WebStorage替换了JSNI:
https://github.com/FrankHossfeld/InterAppEventBus
希望有所帮助。
答案 2 :(得分:0)
您可以通过单独的Html文件为每个模块实现此目的。
首先,为每个应用程序创建单独的html,例如PrintPermit.html并在每个html中指定相应的nocache.js。
然后在菜单上的按钮上添加点击处理程序,并在每次单击时通过Window.open()
加载相应的htmle.g。对于PrintPermit,
printPermitButton.addClickHandler(new ClickHandler{
@Override
public void onClick(ClickEvent arg0) {
String s = GWT.getHostPageBaseURL() + "PrintPermit.html";
Window.open(s, "PrintPermit", "");
}
});
请注意window.open将在浏览器的新标签页中打开,您也可以使用gwt iframe在同一个浏览器页面中打开html。
每个模块都有相应的nocache.js,并将使用Window.open()
通过html加载