0

GWT で AppEngine にデプロイするプロジェクトを行っていますが、Eclipse で次のような警告が表示されます: JavaScript 解析: JSNI 参照で識別子が必要です 何が原因でしょうか?

public void callFacebookAPI(String url) {
        JsonpRequestBuilder requestBuilder = new JsonpRequestBuilder();
        requestBuilder.requestObject(url, new AsyncCallback<FbUser>() {

            public void onFailure(Throwable caught) {
                System.out.println("FAIL" );
            }

            @Override
            public void onSuccess(FbUser result) {
                facebookUser = result;
                System.out.println("Facebook name:" + facebookUser.getName());
            }

        });     
    }


    private final native void doFbLoginFunction() /*-{


    FB.login(function(response) {
        if (response.authResponse) {
            // connected
            //return response.session;
            var accessToken = response.accessToken;
            var url = "http://graph.facebook.com/me?access_token=";

            var facebookUrl = url + accessToken;
            @com.google.gwt.smartpark.client.map.SmartPark::callFacebookAPI(Ljava/lang/String;Ljava/lang/
String;)(facebookUrl);         

        } else {
            // cancelled
        }
    });
4

1 に答える 1

2

callFacebookAPIは静的ではないため@、JSNIの参照の前に何かがあるはずです。

var that = this;
$wnd.FB.login($entry(function(response) {
   // ...
   that.@com.google.gwt.smartpark.client.map.SmartPack::callFacebookAPI(Ljava/lang/String;)(facebookUrl);
   // ...
}));

また、あなたcallFacebookAPIは単一の引数を取るので、JSNI署名は単一のを持っている必要がありLjava/lang/String;ます。

于 2012-11-18T19:20:21.550 に答える