【问题标题】:Get returned value from java method with GWT's JSNI使用 GWT JSNI 从 java 方法获取返回值
【发布时间】:2012-04-06 08:39:40
【问题描述】:

我试图从 java 方法中获取返回值,但它返回了一些非常奇怪的东西:我认为它返回的是用 javascript 编写的方法本身。

这里是java方法的代码:

public String getNameToShow() {
        return "Chart number 1";
    }

和javascript方法:

 public native void drawJSChart(String divId, int a, String jsData) /*-{
            try {
                //First create a script where to paste the jsData
                var scriptID = this.@myPackage.MyClass::getNameToShow();
                console.log(scriptID);
                //Some code
            } catch (e) {
                console.error(e.message);
            }
        }-*/;

谢谢。

【问题讨论】:

    标签: java javascript gwt jsni


    【解决方案1】:

    它返回 js 方法,因为你已经请求了 js 方法。

    从 JSNI 代码调用 java 方法应如下所示:

    var scriptID = this.@myPackage.MyClass::getNameToShow(*)(); //notice second pair of braces
    

    基本上要从 JSNI 调用 java 方法,您需要放置两对大括号。首先定义方法参数类型(在我的示例中,我使用了*,因此它将匹配任何参数类型),第二个用于将参数传递给方法。

    【讨论】:

      【解决方案2】:

      您还必须传递 Java 函数的类型。像这样写它是有效的:

      package XXXXX.client;
      
      import com.google.gwt.core.client.EntryPoint;
      
      class _24_TestJSNIMethodCallback implements EntryPoint {
          public void onModuleLoad() {
              drawJSChart();
          }
      
          public String getNameToShow() {
              return "Chart number 1";
          }
      
          public native void drawJSChart() /*-{
              try {
                  //First create a script where to paste the jsData 
                  var scriptID = this
                          .@XXXXX.client._24_TestJSNIMethodCallback::getNameToShow()();
                  $wnd.alert(scriptID);
                  //Some code 
              } catch (e) {
                  console.error(e.message);
              }
          }-*/;
      
      }
      

      【讨论】:

      • 非常感谢。它起作用了,我想知道为什么它没有返回我所期望的!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-11
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      相关资源
      最近更新 更多