将 java 脚本回调作为 java 方法参数传递
Pass javascript callback as java method argument
在我的 GWT 应用程序中,我有第 3 方反应模块
我需要将 success/failure 回调从 java 脚本传递到 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
的形式传递它,但不知道这是否是一个好方法
大家有什么想法吗?
实际上我发现 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);
}-*/;
在我的 GWT 应用程序中,我有第 3 方反应模块 我需要将 success/failure 回调从 java 脚本传递到 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
的形式传递它,但不知道这是否是一个好方法
大家有什么想法吗?
实际上我发现 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);
}-*/;