Java GWT从小程序调用JS方法
我试图从applet调用一个Javascript方法,我读了一些示例,但没有任何效果 小程序:Java GWT从小程序调用JS方法,java,javascript,gwt,applet,Java,Javascript,Gwt,Applet,我试图从applet调用一个Javascript方法,我读了一些示例,但没有任何效果 小程序: JSObject window = JSObject.getWindow(this); String[] args = new String[]{"some string"}; window.call("alert2 ", args); GWT,视图 public static native void export() /*-{ $wn
JSObject window = JSObject.getWindow(this);
String[] args = new String[]{"some string"};
window.call("alert2 ", args);
GWT,视图
public static native void export() /*-{
$wnd.alert2 = function(result) {
@cl.covepa.client.main.shared.view.DlgVerificarHuellaView::alert2(Ljava/lang/String;)(result);
}
}-*/;
public static void alert2(String result) {
Dialogs.getInstance().alert("CONFIRMACION :" + result);
}
在构造函数调用时,我也测试onModuleLoad
export();
当小程序运行时,它会显示
JavaScript对象上没有这样的方法“alert2”
没关系,我知道代码是模糊的,但我想这是方法保留名称的方式,但不起作用,我仍然在客户端看到这一点
function dBb(){$wnd.alert2=function(a){T2c((!S2c&&(S2c=new X2c),S2c),'CONFIRMACION :'+a)}}
我错过了什么?!,谢谢
更新:
HTMLPanel包含一个带有以下字符串的HTML对象,即它的AddAtShow对话框
<div>
<applet id="uploadApplet" code="app.VerifHuella.class"
archive="VerificarHuella.jar" width="322" height="465" MAYSCRIPT>
<param name="RUT" value="15645322"/>
</applet>
</div>
您的问题似乎是,调用该方法时,该方法在窗口中不可用。这可能是因为三个原因:
- 在gwt置换的异步加载发生之前,您的appled运行
- 您没有在
onModuleLoad()中调用
方法export()
- 您的alert2方法不是静态的
class DlgVerificarHuellaView implements Exportable {
@Export($wnd.alert2)
public static void alert2(String msg) {
}
}
导出函数而不编写jsni的另一个好方法是使用:
当您从小程序调用JS global scope时,
alert2
是否定义在JS global scope中?您可能正在寻找使用在编译过程中混淆GWT代码的方法吗?SSR我正试图这样做,但如果不起作用,我将使用它。user592704 obfuscate是GWT的默认工作,是吗。VisioN,上面是我所有的代码,也许我遗漏了一些东西,但我认为它应该很简单。window
是GQuery中的一个静态变量。因此,import static…GQuery.
发挥了神奇的作用
import static com.google.gwt.query.client.GQuery.*
Properties wnd = window.cast();
wnd.setFunction("alert2", new Function() {
public void f() {
Properties arg = getDataProperties();
DlgVerificarHuellaView.alert2(arg.get(0));
}
});