Gwt 从Java方法调用JSNI方法

Gwt 从Java方法调用JSNI方法,gwt,jsni,Gwt,Jsni,我有以下代码: 公共静态无效显示(字符串值){ 警报(“来自Java”); invokeMethod();//未被调用 } 公共静态本机void invokeMethod()/*-{ 警报(“来自JSNI”); }-*/; 我想从Java方法调用JSNI方法,但是,invokeMethod()从未被调用过。。。 我找不到太多从Java调用JSNI方法的用例 为什么上面的代码不起作用?首先,正如Colin Alworth所说,您需要将代码更改为$wnd.alert(“来自JSNI”);如果

我有以下代码:

公共静态无效显示(字符串值){
警报(“来自Java”);
invokeMethod();//未被调用
}  
公共静态本机void invokeMethod()/*-{
警报(“来自JSNI”);
}-*/; 
我想从Java方法调用JSNI方法,但是,
invokeMethod()
从未被调用过。。。 我找不到太多从Java调用JSNI方法的用例


为什么上面的代码不起作用?

首先,正如Colin Alworth所说,您需要将代码更改为$wnd.alert(“来自JSNI”);如果要调用alert()之外的另一个JS函数,应该在html页面中编写函数体。你会找到所有需要的信息

因此,您的代码应该如下所示:

公共静态无效显示(字符串值){
警报(“来自Java”);
invokeMethod();
}  
公共静态本机void invokeMethod()/*-{
$wnd.alert(“来自JSNI”);//添加了“$wnd”
}-*/; 

首先,正如Colin Alworth所说,您需要将代码更改为$wnd.alert(“来自JSNI”);如果要调用alert()之外的另一个JS函数,应该在html页面中编写函数体。你会找到所有需要的信息

因此,您的代码应该如下所示:

公共静态无效显示(字符串值){
警报(“来自Java”);
invokeMethod();
}  
公共静态本机void invokeMethod()/*-{
$wnd.alert(“来自JSNI”);//添加了“$wnd”
}-*/; 

您的代码应该可以工作。此代码之外可能还有其他错误?请将jsni更改为使用
$wnd.alert
而不是
alert
。并确保在第一个警报上单击“确定”,否则第二个警报无法运行。“并确保在第一个警报上单击“确定”,否则第二个警报无法运行。”这并不重要,因为警报、两个警报都会触发。您的代码应能正常工作。此代码之外可能还有其他错误?请将jsni更改为使用
$wnd.alert
而不是
alert
。并确保在第一个警报上单击“确定”,否则第二个警报无法运行。“并确保在第一个警报上单击“确定”,否则第二个警报无法运行。”这无关紧要,因为警报会触发两个警报