从GWT中的另一个Js调用JavaScript方法

时间:2016-09-01 07:42:15

标签: javascript java gwt

我尝试从java方法

中的另一个javascript方法调用javascript方法

这是我的代码:

public void print(){
    Excec();
}


native String flipName(String tst) /*-{

    // ...implemented with JavaScript
    alert(tst);

}-*/;

native String Excec() /*-{

    alert("exe");
    flipName("1");
    alert("exe1");

}-*/;

当我运行应用程序时,它显示错误:

Excec()([]): flipName is not defined 


com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:249) 
com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:576) 

1 个答案:

答案 0 :(得分:2)

这必须与在JSNI方法中调用Java方法的方式大致相同。

您必须指定要调用的方法的完全限定名称,并且还必须指定参数的类型。

可在此处找到更多信息:http://www.gwtproject.org/doc/latest/DevGuideCodingBasicsJSNI.html

在实践中,这将起作用(将be.knarf.gwt.client.Example替换为您的类的正确包名和类名):

private native void flipName(String tst)
/*-{
   alert(tst);
}-*/;

private native void excec()
/*-{
   alert("exe");
   this.@be.knarf.gwt.client.Example::flipName(Ljava/lang/String;)("hi");
   alert("exe1");
}-*/;