0

我正在关注 GWT 文档Coding Basics - JavaScript: JsInterop以通过 annotation 将 Java 类导出到 JavaScript @JsMethod。但是,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 Uncaught ReferenceError: io is not defined at :1:1

4

1 回答 1

3

来自规范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>
于 2018-03-10T21:12:15.937 回答