0

我的班级中有一个 pojo,其中包含一些在 java 中操作 Maps 和 Arrays 的方法。该对象在 RPC 调用中用于携带我的配置。我有一种机制,在进行任何 RPC 调用之前,我会执行一个 javascript 函数。现在我真正想要的是将我的配置对象传递给这个 javascript 函数,这个 javascript 函数可以操纵这个配置对象,最后这个被操纵的对象将在我的 RPC 调用中传递。

那么如何将我的 java 对象传递给 javascript 并允许对其进行操作呢?

4

1 回答 1

1

首先,您不能直接从 javascript 操作 Java 对象。但是您可以做的是将一组静态方法导出到 javascript 并使用它们来操作您的对象。这是通过这种方式完成的:

public void onModuleLoad() {
    exportHelloMethod(this);
}
public String exportedMethod(String name) {
    // Manipulate your java classes here
    // return something to JS
}
// Create a reference in the browser to the static java method
private native void exportHelloMethod(HelloClass instance) /*-{
  $wnd.hello = instance@[...]HelloClass::exportedMethod(Ljava/lang/String;);
}-*/;

幸运的是,有一个库允许以更简单的方式导出 java 方法和类。它是gwt-exporter,您只需在您的类中实现 Exportable 并使用一组注释,以便导出器生成器完成所有工作。

@ExportPackage("jsc")
@Export
public class MyClass implements Exportable {
  public void show(String s){
  }
}

public void onModuleLoad() {
  ExporterUtil.exportAll();
}

然后在 javascript 中,您可以实例化和操作该类:

 var myclass = new jsc.MyClass();
 myclass.show('whatever');
于 2013-07-17T12:15:00.040 回答