GWT - 在本机方法中直接使用 java bean 参数

GWT - Using a java bean parameter directly in a native method

我正在尝试创建一个普通的对象 java 以使用本机方法将其直接传递给 js 库(作为匿名对象),但该库似乎没有 "see" 它的字段。

例如,假设库有一个通常初始化如下的方法:

mylibrary.initializeApp({
    appId: "myappid",
    name: "test name"}
); 

我想创建一个本机 GWT 方法,该方法具有在 java 中创建的 class 参数。

比如我想创建一个名为class的Config(库在java脚本中没有Config class):

public class Config {
    public String appId;
    public String name;
}

以及初始化库的方法:

public static native void initializeApp(Config config) /*-{
        console.log(config);
        $wnd.mylibrary.initializeApp(config); 
}-*/;

如何使用 JS overlay / jsinterop 或 JSON object utils 来做到这一点? (我正在尝试为消息传递创建一个简单的 Firebase 包装器,我希望尽可能简单)

使用 JsInterop,创建您的配置 class 因此:

import jsinterop.annotations.JsPackage;
import jsinterop.annotations.JsType;

@JsType(isNative=true, namespace=JsPackage.GLOBAL, name="Object")
public class Config {
    public String appId;
    public String name;
}

实例化 Config 的对象,它将是一个匿名的本机对象,您可以将其传递给库,就像您在 initializeApp 方法(使用 JSNI 覆盖)中所做的那样