2012-01-08 9 views
0

JSNIで外部JSからどのように呼び出すことができますか?例えばgwt/jsni-外部JSからJavaへの文字列の受け渡し

//Some external JS code 
     ... 
     this.onFeatureClick = function(event) { 
     ... 
     var name = "Batman"; 
     passToJava(name); //Invoke java method and pass String name 
     }; 

私はここにこれを試してみました:

public void onModuleLoad() { 
    ... 
    nativeVariableName(); //Call native method 
} 

public static void passToJava(String name) { 
    System.out.println(name); 
} 

public native String nativeVariableName() /*-{ 
      $wnd.passToJava = function(name) { 
      @com.google.myproject.webinterface.client.MyWebInterface::passToJava(Ljava/lang/String;)(name); 
      }; }-*/; 

をJavaScriptから呼び出しが動作するか私も知りません。おかげさまで

+0

は、最初のセクションでは、JavaScriptからJavaへの変数を送信する方法について説明し、GWTのドキュメントを見てみましょう:http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsJSNI.html#writing – milan

+0

公衆静的なネイティブvoid alert(String msg)/ * - { $ wnd.alert(msg); } - * /; – milan

答えて

2

このコードはうまくいきます。私はSystem.out.printlnの呼び出しの結果をどこに期待するのか分かりませんが、間違った場所を探しているようです。 System.out.printlnをWindow.alertに置き換え、あなた自身で見てください。それが動作しない場合は、そのエラーがいくつか他の場所にあることを意味:

  • チェック機能が正しく、(ブラウザで開いているコンソールを暴露 とwindow.passToJavaを入力した場合、それはnullを表示する場合は、wasn機能します't が公開されています)
  • onFeatureClickが正しく呼び出されているかどうかを確認してください。
+0

デバッグメッセージを印刷する別の方法は、com.google.gwt.core.client.GWT.log(String)メソッドを使用することです。これにより、コンソールモードのホストモードで表示されます。そうすれば、開発者だけがそのようなメッセージを見ることができますが、後で電話を切ることを忘れてもユーザーは気にならないでしょう。 –

+0

ありがとう、それは助けた。外部JSコードに関数passToJava(){...}を追加すると、呼び出しはonclickで動作します。しかし、私のgwtコードで何も起こりません。 –

関連する問題