在GWT java代码中注册javascript方法,以便可以根据GWT中的事件调用它

时间:2011-08-25 16:12:16

标签: javascript gwt callback

我尝试寻找类似的帖子但找不到任何内容,因此发布此查询以获取帮助。基本上,我在GWT端创建了自定义UI。现在,我想将在GWT端发生的事件发送到javascript / jsp页面。为此,我想知道是否有一种方法可以让jsp / javascript在GWT代码中注册一个方法,并且无论何时,任何事件都发生在GWT端,GWT java代码可以简单地调用这个javascript方法(就像一个函数指针/对象),并在jsp页面通知信息。虽然我可以直接从GWT代码中调用javascript方法,但这意味着GWT代码也需要知道javascript方法名称,这会导致紧密耦合。相反,javascript可以简单地将函数的句柄传递给GWT代码,这只是调用此句柄来传递jsp / javascript代码上的必要事件。任何想法都会非常有用。

1 个答案:

答案 0 :(得分:0)

您可以使用Dictionary将函数名称传递给您的应用程序。

在JSP主页中:

<script type="text/javascript">
  function myFunction() {
    // Do stuff...
  }

  var MyDictionary = {
    myCallback = "myFunction"
  };
</script>

在您的申请中:

public void onEvent(EventType event) {
  Dictionary d = Dictionary.getDictionary("MyDictionary");
  invokeNativeCallback(d.get("myCallback"));
}

private native void invokeNativeCallback(String callbackName) /*-{
  if (typeof $wnd[callbackName] === "function") {
    $wnd[callbackName]();
  }
}-*/;