2017-01-09 27 views
0

在我的GWT应用程序,我有第三方反应模块 我需要从JavaScript到Java传球成功/失败回调就是我与数据通javascript的回调为Java方法参数

JS PART

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

JAVA GWT PART

public static native void reactRPCService(ReactRPCServiceAccessor reactRpc)/*-{ 
    $wnd.reactRpcService = function(callback){ 
     [email protected]::dispatchRPCRequest(???)(callback); 
    } 
}-*/; 


    private void dispatchRPCRequest(???) { 

    } 

计划是调用java GWT RPC功能,数据标准化,并通过回调发送回javascript 我有想法通过它在Java中搜索为JavascriptObject但不知道它是否是一个好方法

任何想法家伙?

+0

您能指定您想要做的事吗?应该转移什么?而Java端会发生什么?仅仅调用Java函数,执行业务逻辑并根据结果调用不同的JS方法是不可能的? – mxlse

回答

0

其实我发现JavascriptObject根据的javadoc可以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){ 
     [email protected]::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); 
}-*/;