为什么我的@JsProperty不保留javascript中的名字?

时间:2017-05-09 11:05:32

标签: gwt gwt-jsinterop

我有以下课程:

@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 个答案:

答案 0 :(得分:2)

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

我认为你在类上缺少@JsType注释(不确定这一点,但我认为GWT编译器可能会忽略未使用@JsType注释的类型,即使你确实有@JsProperty {1}})。 此外,如果您的问题仅在生产模式下进行编译时,请注意您需要一个特殊的编译器标志 - generateJsInteropExports(默认情况下不遵守JS Interop注释)。