GWT JSNI方法调用失败,但没有错误

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){

我正在尝试在GWT应用程序中实现Mozilla。下面是我为测试虚拟应用程序而设置的部分代码:

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函数。