gwt / jsni-将外部JS中的String传递给Java

时间:2012-01-08 20:54:24

标签: java javascript gwt jsni

如何使用JSNI从外部JS调用?

例如:

//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的调用是否有效。 感谢。

1 个答案:

答案 0 :(得分:2)

这段代码很好用。我不知道你希望在哪里看到调用System.out.println的结果,但看起来你正在寻找错误的地方。用Window.alert替换System.out.println并亲自查看。如果它不起作用,则意味着错误在其他地方:

  • 检查功能是否正确公开(在浏览器中打开控制台, 并键入window.passToJava,如果它显示为null,则函数不是 暴露)
  • 检查是否正确调用onFeatureClick。