我正在尝试在 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
方法时,只显示“调用方法”警告框。其他任何一个都没有被调用过。因此,由于某种原因,代码似乎在第一个警报下方的 JSNI 调用处停止。但是在开发模式下没有错误。
我不明白为什么processLogin
没有调用该方法。
我以为我正确地遵循了Google 的文档。
我确实尝试过写作
this.@com.gallup.openid.client.OpenId::processLogin(Ljava/lang/String;)(assertion);
由于这篇文章。OpenID.@...
_instance.@...
我不确定还能尝试什么。