我的任务是将gwt项目(不包括HTML CSS)编译成JS文件,并将其添加到外部JS / HTML文件(在不同的项目中)。
这是必须编译的java代码: 1.客户类:
package com.dell.supportassist.gwt.collectionReport.client;
import org.timepedia.exporter.client.Export; import org.timepedia.exporter.client.Exportable;
@Export( “HelloWorld” 的) 公共类HelloWorld实现Exportable {
public String sayHello(){
return "Hello";
}
}
EntryPoint类:
package com.dell.supportassist.gwt.collectionReport.client;
import org.timepedia.exporter.client.Export; import org.timepedia.exporter.client.Exportable;
@Export( “HelloWorld” 的) 公共类HelloWorld实现Exportable {
public String sayHello(){
return "Hello";
}
}
我的问题是,一旦上面的gwt项目/类被编译,我想在ma外部javascript中访问'sayHello()'方法,如下所示:
var person = hello.sayHello();
system.log(person);
但是这会抛出一个运行时错误,说'hello'没有定义。
P.S我试图在外部HTML中使用GWT编译的JS,在Durandaljs Framework中使用JS。
答案 0 :(得分:0)
很长一段时间没有做过这种事情,但你可以使用JSNI实现这一点,它允许你在GWT中编写本机JS。从JSNI您可以参考您的GWT方法。这样你就可以定义一个函数(在窗口上,最典型的是),这个函数随后可用于常规JS。从这个JSNI方法中,您可以引用您的GWT / Java代码。
代码示例:
public class MyModule implements EntryPoint {
static {
export();
}
/**
* Makes our setData method accessible from plain JS
*/
private static native void export() /*-{
$wnd.setData = @my.package.MyModule::setData(Lcom/google/gwt/core/client/JavaScriptObject;);
}-*/;
private static void setData(JavaScriptObject javaScriptObject) {
// this method is now reachable as window.setData
}
}