如何从Javascript调用GWT java函数?

是否可以从Javascript调用Java(GWT)方法? 从文档中还不清楚。 此处的所有示例http://code.google.com/intl/ru/webtoolkit/doc/latest/DevGuideCodingBasicsJSNI.html演示了如何从JSNI(非JS)函数调用java函数。

更新1

这是一个Java代码:

public class Test_GoogleWeb_JSNI_02 implements EntryPoint { /** * This is the entry point method. */ public void onModuleLoad() { } public static void Callee() { Window.alert("Callee"); } } 

这是html中的调用者按钮示例:

  

这里有一些我尝试过但没有用过的function:

  function Test01() { @com.inthemoon.tests.client.Test_GoogleWeb_JSNI_02::Callee()(); } function Test02() { com.inthemoon.tests.client.Test_GoogleWeb_JSNI_02::Callee()(); }  

更新2

以下工作。

Java准备:

 public void onModuleLoad() { Prepare(); } public static native void Prepare() /*-{ $doc.calleeRunner = @com.inthemoon.tests.client.Test_GoogleWeb_JSNI_02::Callee(); }-*/; public static void Callee() { Window.alert("Callee"); } 

呼叫者:

 function Test03() { document.calleeRunner(); } 

有没有更好的办法?

你的例子不会起作用,因为你试图在一些外部脚本中使用JSNI。 如果你想从外部 JS调用一些东西,你需要使用这个问题中描述的方法或使用GWT导出器

更新:

公开GWT的最安全的方法是将调用包装在其他函数中。 例如:

  public native void expose()/*-{ $wnd.exposedMethod = function(param){ @com.my.MyClass::myFunction(*)(param); } }-*/; 

否则你可能会在生产模式中遇到一些奇怪的错误=)