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 回答