Выпуск класса GWT JsInterop native

У меня есть проблема JsInterop, в то время как упаковка некоторого кода javascript.

JavaScript что-то вроде

com = { gwidgets: {} };
com.gwidgets.Spring = function () {
        this.name = "hello";    
};

com.gwidgets.Spring.prototype.getName = function () {return "test";
};

Класс JsInterop:

package com.gwidgets.leaflet;

import jsinterop.annotations.JsMethod;
import jsinterop.annotations.JsType;

@JsType(isNative=true)
public class Spring {

    @JsMethod
    public native String getName();
}

Однако, когда я создаю экземпляр класса и пытаюсь вызвать getName()метод, я получаю ошибку:

leafletwrapper-0.js: 1183 Uncought TypeError: spring.getName не является
функция

Есть идеи, что не так с моим кодом?

1 ответ

  1. Согласно имеющемуся у вас javascript, одним из решений может быть добавление пространства имен в аннотации

    import jsinterop.annotations.JsMethod;
    import jsinterop.annotations.JsType;
    
    @JsType(isNative=true, namespace = "com.gwidgets")
    public class Spring {
    
        @JsMethod
        public native String getName();
    }
    

    Или переместите Java class Spring в пакет com.gwidgets (так же, как javascript)

    Или измените пространство имен javascript для соответствия пакету в классе Spring