将javascript回调作为java方法参数传递
在我的GWT应用程序中,我有第三方react模块 我需要将成功/失败回调从javascript传递到java,并在java中填充数据 JS部分将javascript回调作为java方法参数传递,javascript,java,gwt,Javascript,Java,Gwt,在我的GWT应用程序中,我有第三方react模块 我需要将成功/失败回调从javascript传递到java,并在java中填充数据 JS部分 function() { var reactCallback = { success: function() { console.log('success!'); }, error: function() {
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
传递,但不知道这是否是一个好方法
有什么想法吗?事实上,我发现根据javadocs,
JavascriptObject
可以从Java返回JSNI,成为原始对象,并且可以按预期在JavaScript中访问。
所以在我的原生函数中,我添加了如下签名
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);
}-*/;
你能具体说明你想做什么吗。应该转移什么?Java端会发生什么?难道不可能只调用Java函数、业务逻辑和根据结果调用不同的JS方法吗?