为什么我的@JsProperty没有在javascript中保留名称?

问题描述 投票:0回答:2

我有以下课程:

@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_;
}-*/;
gwt gwt-jsinterop
2个回答
2
投票

编辑:我假设您正在谈论 GWT 2.8。如果是其他,我的答案不适用。

我认为您在类上缺少

@JsType
注释(对此不确定,但我认为 GWT 编译器可能会忽略未用
@JsType
注释的类型,即使您确实有
@JsProperty
)。 另外,如果您的问题仅在生产模式下编译时出现,请注意您需要一个特殊的编译器标志 -
generateJsInteropExports
(默认情况下不支持 JS Interop 注释)。


0
投票

该类应该被注释为 JavaScript 对象。

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

    @JsType(isNative=true,namespace=JsPackage.GLOBAL,name="Object")
public class Options {

    @JsProperty
    public boolean extractUrlsWithoutProtocol;

    public Options(boolean extractUrlsWithoutProtocol) {
        this.extractUrlsWithoutProtocol = extractUrlsWithoutProtocol;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.