从html脚本标记调用GWT Java函数

前端之家收集整理的这篇文章主要介绍了从html脚本标记调用GWT Java函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个GWT项目,我想添加一个脚本标签到GWT项目的主要html文件,调用位于我的客户端代码中的 Java函数.

根据documentation我应该添加如下html标签

<script type='text/javascript'> 
this.@com.myCompany.myProject.client.myClass::myFunction();
</script>

其中com.myCompany.myProject.client.myClass是类路径,myFunction是我要调用的java函数.

当我尝试这个与myFunction的以下实现没有任何反应:

public void myFunction() {
    HTMLPanel panel = new HTMLPanel("I have been called");
    RootPanel.get().add(panel);
}

也就是说,myFunction没有被调用.

但是当我从JSNI方法进行相同的调用时,那么它是有效的.

可能不可能从html脚本执行调用,还是我做错了?

谢谢!

解决方法

>您尝试做的不工作,因为GWT编译器重命名所有标识符名称以最小化生成代码大小:所以myFunction()存在,但它被称为别的东西.
>您正在查看旧版本的文档.在最新版本中,这一切都解释为: Calling a Java Method from Handwritten JavaScript

解决方案 – 在其他地方添加一个额外的方法

public static native void exportMyFunction() /*-{
   $wnd.myFunction =
      $entry(@com.myCompany.myProject.client.myClass::myFunction());
}-*/;

那么在你的应用初始化中你必须调用EnclosingClass.exportMyFunction().然后在手工制作的javascript中,您可以通过以下方式访问它:

window.myFunction();
原文链接:https://www.f2er.com/html/230515.html

猜你在找的HTML相关文章