我试图读取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编译器自己生成的函数并将其转储到变量上。这有什么问题?就像我说的那样,官方文档中有一个非常类似的例子,所以这应该是这样的。提前谢谢。
答案 0 :(得分:4)
您必须在函数引用后添加一对额外的括号。第一对包含函数签名(描述参数类型)。现在你没有执行该函数,而是将实际函数传递给$entry()
所以改变这个
val=$entry(@whateverpackage.thisclass::getValue());
到这个
var val = $entry(@whateverpackage.thisclass::getValue()());
顺便说一下,我添加了 var 关键字,以防止任何潜在的范围冲突。