【问题标题】:Call JavaScript methode from another Js in GWT在 GET 中从另一个 Js 调用 JavaScript 方法
【发布时间】:2016-09-01 07:42:14
【问题描述】:

我试图从 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) 

【问题讨论】:

    标签: javascript java gwt


    【解决方案1】:

    这必须以与从 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");
    }-*/;
    

    【讨论】:

    • 从 GWT 2.7 开始,JSNI 代码可能会被简化。 this.@Example::flipName(*)("hi");而不是这个。@be.knarf.gwt.client.Example::flipName(Ljava/lang/String;)("hi");
    猜你喜欢
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    相关资源
    最近更新 更多