GWT JSNI方法调用失败,但没有错误
我正在尝试在GWT应用程序中实现Mozilla。下面是我为测试虚拟应用程序而设置的部分代码:GWT JSNI方法调用失败,但没有错误,gwt,mozilla,jsni,Gwt,Mozilla,Jsni,我正在尝试在GWT应用程序中实现Mozilla。下面是我为测试虚拟应用程序而设置的部分代码: public class OpenId implements EntryPoint { private native void callWatch(String email) /*-{ $wnd.navigator.id.watch({ loggedInUser: email, onlogin: function(assertion){
public class OpenId implements EntryPoint {
private native void callWatch(String email)
/*-{
$wnd.navigator.id.watch({
loggedInUser: email,
onlogin: function(assertion){
$wnd.alert("Calling method");
this.@com.gallup.openid.client.OpenId::processLogin(Ljava/lang/String;)(assertion);
$wnd.alert("Called Java Method");
},
onlogout: function(){alert("Logged Out!");}
});
}-*/;
private void processLogin(String assertion){
Window.alert("Logged in!");
personaStatus.setText("Log In Complete.");
}
}
当我调用callWatch
方法时,只会显示“Calling method”警报框。其他两个都没有被叫来。因此,出于某种原因,代码似乎在第一个警报正下方的JSNI调用处停止。但是在开发模式下没有错误
我不明白为什么没有调用processLogin
方法
我想我没弄错
我确实试过写作
this.@com.gallup.openid.client.OpenId::processLogin(Ljava/lang/String;)(assertion);
作为OpenID.@…
和实例。@…
由于
我不确定还可以尝试什么。变量
this
指向直接围绕它的函数,在本例中是onlogin JavaScript函数。您需要使用一个临时的变量(顺便说一下,这是一个典型的JavaScript习惯用法)
private原生void callWatch(字符串电子邮件)
/*-{
var=这个;
...
onlogin:函数(断言){
那是。。。
然后,理想情况下使用$entry(…)
,这样,如果您注册了UncaughtExceptionHandler,就会看到错误消息
另请参见:变量this
指向直接围绕它的函数,在本例中是您的onlogin JavaScript函数。您需要使用一个临时变量(顺便说一下,这是一个典型的JavaScript习惯用法)
private原生void callWatch(字符串电子邮件)
/*-{
var=这个;
...
onlogin:函数(断言){
那是。。。
然后,理想情况下使用$entry(…)
,这样,如果您注册了UncaughtExceptionHandler,就会看到错误消息
另请参见:看起来断言变量可能有问题…是否显示字符串“$wnd.alert(assertion);”。如果是,您是否尝试将静态字符串传递给processLogin函数。看起来断言变量可能有问题…是否显示字符串“$wnd.alert(assertion);'显示字符串。如果是这样,您是否尝试将静态字符串传递给processLogin函数。