2016-09-04 7 views
1

私はGWTでVKthreadを使用して、クライアント側でのマルチスレッドを実装しようとしている中でJavaScriptにJavaメソッドのための参照を渡すことですは、その可能性はGWT

私は、Javaメソッドの参照を渡す必要があり

私の問題スレッドが実行されると、それはJavaのメソッド

呼んでここに私のコードだように、Javaスクリプトで呼び出しをスレッドします

static JavaScriptObject sum() { 

    return flipName(); 
} 

static native JavaScriptObject flipName() /*-{ 
    console.log("asd"); 
}-*/; 


native String Excec() /*-{ 

    $wnd.vkthread 
      .exec(
        @com.tradeos.b2b.industries.freight.data.freightTrade.marketplace.builders.client.MarketPlaceQuoteResultsPanel::sum()(), //function to execute in a threads 
        [], //arguments for the function 
        function(data) { // callback function; 
         var foo = data; 
         console.log(foo); 
        }); 

}-*/; 

私はそれが動作$ wnd.vkthreadにjavascriptのメソッドを渡した場合よく、しかしwh Javaメソッドを渡そうとしていますが動作しません!

public static native void exportStaticMethod() /*-{ 
     $wnd.sum = 
      $entry(@com.tradeos.b2b.industries.freight.data.freightTrade.marketplace.builders.client.MarketPlaceQuoteResultsPanel::sum()); 
}-*/; 

は今、あなたはあなたが複数の場所でそれを呼び出すために計画している場合に便利です、あなたのJavaメソッドの代わりに$ wnd.sumを使用することができます。

答えて

0

あなたはあなたの方法をエクスポートする必要があります。

これを一度だけ使用する場合は、JSNIメソッドで$ entry()に直接ラップすることができます。

ドキュメントは、それを説明する:スニペットで Calling a Java Method from Handwritten JavaScript

2

、あなたは括弧の最後のペアを削除し、メソッドへの参照を取得するには、(::sum()())あなたの方法を呼んでいます。 $entryにもラップする必要があります。

$wnd.vkthread 
     .exec(
       $entry(@com.tradeos.b2b.industries.freight.data.freightTrade.marketplace.builders.client.MarketPlaceQuoteResultsPanel::sum()), //function to execute in a threads 
       [], //arguments for the function 
       function(data) { // callback function; 
        var foo = data; 
        console.log(foo); 
       }); 
関連する問題