如何从浏览器控制台访问GWT的JsInterop出口类型?

问题描述 投票:1回答:1

我运行GWT应用程序,我想用JsInterop快速测试的东西。

具体而言,我导出的enum

package com.mypackage.test

@JsType
enum MyEnum {
    A,
    B,
    C;
}

我想检查我是否能编写任何代码之前正确地访问它。

文件显示这样的事情:

var aClass = new com.gwt.example.MyClass('World');

comWindow定义。所以,我怎么能访问JsInterop从控制台编写代码之前测试的东西呢?

javascript java gwt
1个回答
3
投票

你记得给-generateJsInteropExports标志传递到编译器(和中超开发模式)?没有它,GWT,不出口类型的,因为这会增加输出尺寸。

此外,该包看起来并不像你期望在GWT项目看以往的结构(即一个client在那里的某个地方,相当于您的GWT模块) - 你还记得从你.gwt.xml文件中引用这个包?

也有可能,这应该是public - 的JsInterop代码默认为不显示不可见的成员(因为它们不是公开的,因此不认为在其他地方消费)。我不知道这是否适用于类型,或者只是成员。


最后,要注意标记与JsType一个Java enum不会奇迹般地使他们有意义的JS - 会出现在指定的包MyEnum类型,而且每个静态成员将出席,但他们将是不透明的JS对象,而不是字符串或别的东西,你可以很容易地进行交互,除非你还对在类中的方法添加其他jsinterop注解。 J2CL支持@JsEnum它将把他们全部纳入数字常量虽然自动,但这并没有被移植到GWT2。

© www.soinside.com 2019 - 2024. All rights reserved.