无法通过GWT中的JsInterop将Java类导出到JavaScript
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法通过GWT中的JsInterop将Java类导出到JavaScript相关的知识,希望对你有一定的参考价值。
我正在关注GWT文档Coding Basics - JavaScript: JsInterop,通过注释@JsMethod
将Java类导出到javascript。但是,Java类不会转换为JavaScript。
这是我的Java类:
package io.mincongh.client;
import jsinterop.annotations.JsMethod;
public class ExportedMethods {
@JsMethod
public static String sayHello(String name) {
return "Hello, " + name;
}
}
我的项目是通过GWT Maven插件2.8.2在Maven中构建的:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test</goal>
<goal>generateAsync</goal>
</goals>
</execution>
</executions>
<configuration>
<runTarget>StockMarket.html</runTarget>
<modules>
<module>io.mincongh.StockMarket</module>
</modules>
</configuration>
</plugin>
当我在浏览器的控制台中调用导出的方法时。然后没有定义方法:
io.mincongh.client.ExportedMethods.sayHello('world');
VM59:1未捕获的ReferenceError:io未定义为:1:1
答案
从规范JsInterop v1.0: Nextgen GWT/JavaScript Interoperability,段落@JsType:
请注意,将Java对象导出到要由其命名空间访问的JavaScript(例如,此示例)需要
--generateJsInteropExports
标志。
所以你需要在Maven GWT插件中指定这个标志:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
...
<configuration>
<generateJsInteropExports>true</generateJsInteropExports>
</configuration>
</plugin>
以上是关于无法通过GWT中的JsInterop将Java类导出到JavaScript的主要内容,如果未能解决你的问题,请参考以下文章