2012-04-06 5 views
1

私はJavaメソッドから返された値を取得しようとしていますが、非常に奇妙なものを返します:javascriptで記述されたメソッド自体を返します。GWTのJSNIを使ってjavaメソッドから返された値を取得する

ここでは、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 = [email protected]::getNameToShow(); 
       console.log(scriptID); 
       //Some code 
      } catch (e) { 
       console.error(e.message); 
      } 
     }-*/; 

はありがとうございます。

答えて

1

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 
        [email protected]_24_TestJSNIMethodCallback::getNameToShow()(); 
      $wnd.alert(scriptID); 
      //Some code 
     } catch (e) { 
      console.error(e.message); 
     } 
    }-*/; 

} 
+0

ありがとうございます。それがうまくいって、なぜ私が期待したものを返さなかったのか、私は期待していました! –

5

jsメソッドを要求したため、jsメソッドが返されます。 JSNIコードからJavaメソッドの

呼び出しは次のようになります。

var scriptID = [email protected]::getNameToShow(*)(); //notice second pair of braces 

基本的にJSNIからJavaメソッドを呼び出すために、あなたは、中括弧の二組を配置する必要があります。最初にメソッドのパラメータ型を定義します(私の例では*を使用していますので、どのパラメータ型にも一致します)。2番目はメソッドにパラメータを渡すために使用されます。

関連する問題