GWT - Использование параметра bean java непосредственно в нативном методе - PullRequest
0 голосов
/ 04 февраля 2020

Я пытаюсь создать объект простым java, чтобы передать его непосредственно в библиотеку js (как анонимный объект), используя собственный метод, но библиотека, похоже, не "видит" свои поля.

Например, допустим, в библиотеке есть метод, который обычно инициализируется следующим образом:

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

Я хочу создать собственный метод GWT, у которого есть параметр, класс, созданный в java.

Например, я хочу создать класс с именем Config (в библиотеке нет класса Config в javascript):

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 утилиты объекта? (Я пытаюсь создать простую оболочку Firebase для обмена сообщениями, и я хотел бы сделать это как можно проще)

1 Ответ

3 голосов
/ 06 февраля 2020

Используя JsInterop, создайте свой класс Config следующим образом:

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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...