首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用JSNI实现javascript API?

如何使用JSNI实现javascript API?
EN

Stack Overflow用户
提问于 2013-01-17 22:21:59
回答 1查看 383关注 0票数 1

我正在尝试使用GWT实现一个API (SCORM API)。客户端代码需要一个带有Initialize()、getLastError()等方法的API对象。

我试图将此api实现为Java对象,但我发现编译后的名称已更改,不能由客户端代码直接使用。

我看到gwt-exporter可以做到这一点(http://code.google.com/p/gwt-exporter/),但我想知道如何使用纯gwt和jsni来实现它。

由于API应该是一个对象,名为API_1484_11的对象附加到窗口对象,而不是函数,所以我不知道如何使用$entry()习惯用法。

以下是我当前失败的代码:

代码语言:javascript
复制
public final class SCORMApi {

    protected SCORMApi() {}

    public void Initialize(){
        GWT.log("** INITIALIZE CALLED **");
    }

    public static void create(){
        bind(new SCORMApi());
    }

    public static native void bind(SCORMApi api) /*-{
        $wnd.API_1484_11 = api;
    }-*/;

}

因此,在这种情况下,我的问题是:

如何让javascript调用(例如window.API_1484_11.Initialize() )到达我的java gwt代码?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-18 00:50:59

使用您的bind方法是正确的。但是您还不了解如何在JSNI中调用Java方法。以下是在Initialize方法的情况下执行此操作的方法:

代码语言:javascript
复制
public static native void bind(SCORMApi api) /*-{
    $wnd.API_1484_11 = {
        initialize: function() {
            $entry( api.@com.yourpackage.name.SCORMApi::Initialize()() );
        }
    };
}-*/;

要想真正了解GWT、12,必须阅读有关此主题的博客。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14381116

复制
相关文章

相似问题

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