Почему мой @JsProperty не сохраняет имя в javascript?

У меня есть следующий класс:

@JsType
public class Options {

    @JsProperty
    public boolean extractUrlsWithoutProtocol;

    public Options(boolean extractUrlsWithoutProtocol) {
        this.extractUrlsWithoutProtocol = extractUrlsWithoutProtocol;
    }
}

Теперь я передаю его в метод JavaScript, и когда я использую инструменты разработчика для проверки, я получаю, что имя свойства extractUrlsWithoutProtocol_0_g$

Более того, если я удалю аннотацию @JsProperty, я не получу изменений в сгенерированный код...

Обновление: что работает

   public native void setExtractUrlsWithoutProtocol(boolean extractUrlsWIthoutProtocol_)
/*-{
    this.extractUrlsWithoutProtocol = extractUrlsWIthoutProtocol_;
}-*/;

1 ответ

Решение

Изменить: я предполагаю, что вы говорите о GWT 2.8. Если другой, мой ответ не применяется.

Я думаю, что вам не хватает @JsType аннотации к классу (не уверен в этом, но я думаю, что компилятор GWT может игнорировать типы, не аннотированные @JsTypeдаже если у вас есть @JsProperty). Кроме того, если ваша проблема возникает ТОЛЬКО при компиляции в производственном режиме, учтите, что вам нужен специальный флаг компилятора - generateJsInteropExports (по умолчанию НЕ учитываются аннотации JS Interop).

Другие вопросы по тегам