从GWT上的手写JS获取Java方法返回值

时间:2011-11-21 10:51:15

标签: javascript gwt return jsni

我试图读取Java方法的返回值并将其保存到JS变量中。根据文档,这应该做的工作:

返回值的Native Java方法:

static public double getValue() {
    return 21.0;
}

创建一个从手写JS调用本机Java的引用:

$wnd.showValue=function() {
    val=$entry(@whateverpackage.thisclass::getValue());
    alert("Value: "+val);
}

最后,简单的JS:

showValue();

警告框中显示的输出为:

Value: function(){try{return hh(c,this,arguments)}catch(b){throw b}}

我猜测它不是获取返回值,而是获取GWT编译器自己生成的函数并将其转储到变量上。这有什么问题?就像我说的那样,官方文档中有一个非常类似的例子,所以这应该是这样的。提前谢谢。

1 个答案:

答案 0 :(得分:4)

您必须在函数引用后添加一对额外的括号。第一对包含函数签名(描述参数类型)。现在你没有执行该函数,而是将实际函数传递给$entry()

所以改变这个

val=$entry(@whateverpackage.thisclass::getValue());

到这个

var val = $entry(@whateverpackage.thisclass::getValue()());

顺便说一下,我添加了 var 关键字,以防止任何潜在的范围冲突。