我正在运行 GWT 应用程序,并且想使用 JsInterop 快速测试某些内容。
具体来说,我导出了一个enum
:
package com.mypackage.test
@JsType
enum MyEnum {
A,
B,
C;
}
我想在编写任何代码之前检查是否可以正确访问它。
文档显示了这样的事情:
var aClass = new com.gwt.example.MyClass('World');
But com
没有定义在Window
。那么在编写代码之前如何从控制台访问 JsInterop 来进行测试呢?
您是否记得通过-generateJsInteropExports
编译器(和超级开发模式)的标志?如果没有它,GWT 将不会导出类型,因为这会增加输出大小。
此外,该包看起来不像您期望在 GWT 项目中看到的通常结构(即client
那里的某个地方,对应于您的 GWT 模块) - 您是否记得从 .gwt.xml 文件中引用此包?
这也有可能应该是public
- JsInterop 代码默认不显示不可见成员(因为它们不是公开的,因此不假定在其他地方使用)。我不确定这是否适用于类型,或仅适用于成员。
最后,请注意标记 Javaenum
with JsType 并不会神奇地使它们在 JS 中有意义 - 指定的包中将会有一个 MyEnum 类型,并且每个静态成员都会存在,但它们将是不透明的 JS 对象,而不是字符串或其他您可以轻松实现的东西交互,除非您还在该类的方法上添加其他 jsinterop 注释。 J2CL 支持@JsEnum
这会自动将它们全部转换为数字常量,但这尚未移植到 GWT2。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)