使用GWT的JSNI从java方法获取返回值

bou*_*tun 1 javascript java gwt jsni

我试图从java方法获取返回的值,但它返回一些非常奇怪的东西:它返回我用javascript编写的方法本身.

这里是java方法的代码:

public String getNameToShow() {
        return "Chart number 1";
    }
Run Code Online (Sandbox Code Playgroud)

和javascript方法:

 public native void drawJSChart(String divId, int a, String jsData) /*-{
            try {
                //First create a script where to paste the jsData
                var scriptID = this.@myPackage.MyClass::getNameToShow();
                console.log(scriptID);
                //Some code
            } catch (e) {
                console.error(e.message);
            }
        }-*/;
Run Code Online (Sandbox Code Playgroud)

谢谢.

jus*_*sio 5

它返回js方法,因为你已经要求使用js方法.

从JSNI代码调用java方法应该如下所示:

var scriptID = this.@myPackage.MyClass::getNameToShow(*)(); //notice second pair of braces
Run Code Online (Sandbox Code Playgroud)

基本上从JSNI调用java方法,您需要放置两对大括号.首先定义方法参数类型(在我的例子中,我使用*它将匹配任何参数类型),第二个用于将参数传递给方法.