首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从GWT中的JSNI方法调用JSNI方法

如何从GWT中的JSNI方法调用JSNI方法
EN

Stack Overflow用户
提问于 2014-10-09 11:18:06
回答 1查看 1.3K关注 0票数 1

是否有可能以这种方式从同一类中的另一个本机方法调用本机方法?

代码语言:javascript
复制
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。有什么想法吗?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2014-10-09 11:21:46

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

例如,如果这两个方法位于类com.mycompany.Test中,则可以调用mySECONDJsniMethod(),如下所示:

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

有关从JavaScript访问Java方法和字段的更多信息,请参见GWT文档。

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

代码语言:javascript
复制
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;
    }-*/;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26277049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档