我运行GWT应用程序,我想用JsInterop快速测试的东西。
具体而言,我导出的enum
:
package com.mypackage.test
@JsType
enum MyEnum {
A,
B,
C;
}
我想检查我是否能编写任何代码之前正确地访问它。
文件显示这样的事情:
var aClass = new com.gwt.example.MyClass('World');
但com
不Window
定义。所以,我怎么能访问JsInterop从控制台编写代码之前测试的东西呢?
你记得给-generateJsInteropExports
标志传递到编译器(和中超开发模式)?没有它,GWT,不出口类型的,因为这会增加输出尺寸。
此外,该包看起来并不像你期望在GWT项目看以往的结构(即一个client
在那里的某个地方,相当于您的GWT模块) - 你还记得从你.gwt.xml文件中引用这个包?
也有可能,这应该是public
- 的JsInterop代码默认为不显示不可见的成员(因为它们不是公开的,因此不认为在其他地方消费)。我不知道这是否适用于类型,或者只是成员。
最后,要注意标记与JsType一个Java enum
不会奇迹般地使他们有意义的JS - 会出现在指定的包MyEnum类型,而且每个静态成员将出席,但他们将是不透明的JS对象,而不是字符串或别的东西,你可以很容易地进行交互,除非你还对在类中的方法添加其他jsinterop注解。 J2CL支持@JsEnum
它将把他们全部纳入数字常量虽然自动,但这并没有被移植到GWT2。