2012-10-28 50 views
0

我有问题传递String Java方法在我的GWT项目:从JSNI到Java传递字符串 - GWT

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); 
     [email protected]::updateWave(Ljava/lang/String;)(data.toString()); 
    } 
}-*/; 

将Chrome/Firefox浏览器的控制台日志看我可以看到,我得到正确的数据(这是确切的日志我得到):

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

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

+0

data.toString()?尝试仅传递'data'作为参数 –

回答

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

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

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

0

你说的意思是:

当GWT Java方法获得它是空的数据。

你说的是waveIt()应该返回的字符串吗?

该错误可能是waveIt()中没有return陈述。