当前位置: 首页 > 面试题库 >

如何从Javascript调用GWT Java函数?

盛辰沛
2023-03-14
问题内容

是否可以从Javascript调用Java(GWT)方法?从文档中也不清楚。http://code.google.com/intl/zh-
CN/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中的呼叫者按钮示例:

<input type='button' value='Call' onclick='Test02()'>

这是我尝试过但无法使用的一些功能:

<script type="text/javascript">

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

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


</script>

更新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);
    }
}-*/;

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



 类似资料:
  • 问题内容: 如何从PHP调用JavaScript函数? 以下代码来自 xyz.html (单击按钮时),它在外部 xyz.js中 调用a 。这将调用wait.php。 和 wait.php 从那里以同样的方式从另一个PHP文件调用代码。 该否则工作正常,但它不会被调用我想要的方式。 问题答案: 就PHP而言(或者实际上,通常是一个Web服务器),HTML页面只不过是一个大字符串而已。 您可以使用P

  • 问题内容: 我正在做一个网络抓取项目。我正在使用的网站之一的数据来自Javascript。 在我之前的一个问题中,有人建议我可以直接从Python调用Javascript,但是我不确定如何实现。 例如:如果JavaScript函数定义为: 如何从Python调用JavaScript函数? 问题答案: 查找具有Python绑定的JavaScript解释器。(尝试Rhino?V8?SeaMonkey?

  • 问题内容: 我想从JavaScript 调用,这是一个C#函数。我尝试了下面的代码,但是无论JavaScript条件是还是,都被调用了! JavaScript代码: 后面的C#代码: 如何从JavaScript调用C#函数? 问题答案: 您可以使用Web方法和Ajax:

  • 本文向大家介绍如何从onmouseover事件中调用JavaScript函数?,包括了如何从onmouseover事件中调用JavaScript函数?的使用技巧和注意事项,需要的朋友参考一下 将鼠标移到任何元素上时,会触发onmouseover事件。 示例 您可以尝试运行以下示例,以了解如何从onmouseover事件调用JavaScript函数

  • 本文向大家介绍如何从onmouseout事件中调用JavaScript函数?,包括了如何从onmouseout事件中调用JavaScript函数?的使用技巧和注意事项,需要的朋友参考一下 当您将鼠标从该元素移出时,onmouseout会触发。 示例 您可以尝试运行以下示例,以了解如何从onmouseout事件中调用JavaScript函数

  • 问题内容: 我使用PhoneGap开发了一个应用程序。我得到了一项在后台进行本地编码的服务(该服务和手机缺口应用程序在同一项目中)。不幸的是,我想从此服务中调用javascript函数。因此,我在网上搜索并创建了一些有趣的东西:创建一个扩展Plugin的类并在其中进行一些处理。然后我发现了这个: 我用此代码进行了测试,但是发生了一些错误: 这是我测试的方式: 在类c中,execute方法如下: 当