私は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.@...
他に何を試すべきかわかりません。