【问题标题】:Pass javascript callback as java method argument将 javascript 回调作为 java 方法参数传递
【发布时间】:2017-01-09 13:55:01
【问题描述】:

在我的 GWT 应用程序中,我有 3rd 方反应模块 我需要将成功/失败回调从 javascript 传递到 java,在那里我将用数据填充它

JS部分

function() {
        var reactCallback = {
            success: function() {
                console.log('success!');
            },
            error: function() {
                console.log('error!');
            }
        };
        window.reactRpcService(reactCallback);
    }

JAVA GWT 部分

 public static native void reactRPCService(ReactRPCServiceAccessor reactRpc)/*-{
    $wnd.reactRpcService = function(callback){
        reactRpc.@com.myproject.ReactRPCServiceAccessor::dispatchRPCRequest(???)(callback);
    }
}-*/;


    private void dispatchRPCRequest(???) {

    }

计划是调用java GWT RPC函数规范化数据并通过回调将其发送回javascript 我有想法在 Java 中将它作为 JavascriptObject 传递,但不知道这是否是一个好方法

各位有什么想法吗?

【问题讨论】:

  • 你能具体说明你想做什么。应该转移什么? Java 端会发生什么?难道不能只调用Java函数,做业务逻辑,根据结果调用不同的JS方法吗?

标签: javascript java gwt


【解决方案1】:

其实我发现JavascriptObject根据javadocs可以是passed back into JSNI from Java becomes the original object, and can be accessed in JavaScript as expected.

所以在我的原生函数中我添加了这样的签名

public static native void setupNativeRactRPCServiceCalls(ReactRPCServiceAccessor reactRpc)/*-{
    $wnd.reactRpcService = function(callback){
        reactRpc.@com.myproject.ReactRPCServiceAccessor::dispatchRPCRequest(Lcom/google/gwt/core/client/JavaScriptObject;)(callback);
    }
}-*/;

 private void dispatchRPCRequest(final JavaScriptObject callback ) {
...retrieve JSON data
}

然后在从服务器检索数据后,我将其传递回 javascript

   public static native void reactDataRedirector(JavaScriptObject callbackObject, String jsonData)/*-{
        callbackObject.success(jsonData);
}-*/;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 2013-07-10
    • 2022-01-22
    • 1970-01-01
    • 2014-10-25
    • 2017-08-21
    • 1970-01-01
    相关资源
    最近更新 更多