java - 如何从 GWT 中的 JSNI 方法调用 JSNI 方法

标签 java javascript gwt jsni

是否可以通过这种方式从同一个类中的另一个 native 方法调用 native 方法?

public native JavaScriptObject mySECONDJsniMethod(String name) /*-{
        //..
        return secondVar;
}-*/;

public native JavaScriptObject myFIRSTJsniMethod(String name) /*-{
        var secondVar = mySECONDJsniMethod(name);
        //..
        return firstVar;
}-*/;

在我的 Chrome 控制台中,它返回: Uncaught TypeError: mySECONDJsniMethod is not a function 。 有任何想法吗?谢谢。

最佳答案

是的。在 myFIRSTJsniMethod() 的 JSNI 中,使用正常的 JSNI 语法来调用 Java 方法。

例如,如果这两个方法位于 com.mycompany.Test 类中,您可以像这样调用 mySECONDJsniMethod():

public native JavaScriptObject myFIRSTJsniMethod(String name) /*-{
    var secondVar = this.@com.mycompany.Test::mySECONDJsniMethod(Ljava/lang/String;)(name);
    //..
    return firstVar;
}-*/;

请参阅 Accessing Java Methods and Fields from JavaScript 上的 GWT 文档了解更多信息。

编辑:这是一个完整的可编译示例:

package com.mycompany.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.JavaScriptObject;

public class SO26277049 implements EntryPoint {

    @Override
    public void onModuleLoad() {
        final JavaScriptObject firstVar = myFIRSTJsniMethod("hello world!");
    }

    public native JavaScriptObject mySECONDJsniMethod(String name) /*-{
        var secondVar = {
            name: name
        };
        return secondVar;
    }-*/;

    public native JavaScriptObject myFIRSTJsniMethod(String name) /*-{
        var secondVar = this.@com.mycompany.client.SO26277049::mySECONDJsniMethod(Ljava/lang/String;)(name);
        $wnd.alert(secondVar.name);
        var firstVar = secondVar;
        return firstVar;
    }-*/;
}

关于java - 如何从 GWT 中的 JSNI 方法调用 JSNI 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26277049/

相关文章:

java - 使用输入更改对象名称

javascript - 处理部分法语地址的高级正则表达式

javascript - 如何使用 Angular 设置背景颜色?

GWT 动态语言环境

c# - Microsoft 的 .NET GWT 解决方案是什么?

java - 在列表中存储多种对象类型

java - 没有可用的 'org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder' 类型的合格 bean

java - 为什么私有(private)内部类中的变量无法从 Get 中的 AsynC 回调方法获取具有值的私有(private)变量的值?

java - 有没有办法显示正在运行的 JVM 中使用的标志?

javascript - 将变量从数组传递到函数中