将字符串从JSNI传递到Java - GWT

时间:2012-10-28 12:52:36

标签: java gwt jsni

我在将String传递给GWT项目中的Java方法时遇到问题:

public final native String waveIt()/*-{
    var instance = this;
    var data = $wnd.Waverecorder.data();
    var strData = data.toString();
    var arr = strData.split(',');
    for (var i = 0; i < arr.length; i++) {
        var data = arr[i];
        console.log(data);
        instance.@com.mycode.wave.showcase.client.Showcase::updateWave(Ljava/lang/String;)(data.toString());
    }
}-*/;

从Chrome / Firefox的控制台日志中我可以看到我获得了正确的数据(这是我得到的确切日志):

-0.00006103515625
-0.00006103515625
-0.00006103515625
-0.05072021484375
-0.553833007812
 (more data omitted)

当GWT java方法收到data时,它是空的。可能是什么原因?

2 个答案:

答案 0 :(得分:0)

你是什么意思:

  

当GWT java方法收到数据时,它是空的。

您是在谈论waveIt()应该返回的字符串吗?

错误可能是return中没有waveIt()声明。

答案 1 :(得分:0)

  1. 此方法应该是无效的,因为您不返回字符串 - 您可以从中调用Java方法。

  2. 查看代码,您不需要var instance = this;你可以删除实例。在@com。

  3. 之前
  4. 您声明var数据两次:在循环之前和循环内部。您可以使用arr [i]调用它,而不是使用data.toString()调用Java方法。