1

App Engine GWT アプリがあります。私のクライアント コードでは、ログインしているユーザーの電子メールを取得しており、それを表示したいと考えています。サーバーへのリクエストによってユーザーのメールを取得します。

問題は、onModuleLoad() メソッドが実行された後に getUserEmail() メソッドが実行されているため、表示したい場所で userEmail-String が null になることです。getUserEmail() メソッドが実際に正しい情報を返すことを確認しました。前述のように、私の問題は、必要な情報を取得するときです。なぜこれが起こるのか、そしてこれを修正する方法について誰かが私をどこかに指摘できますか?

public String userEmail;

@Override
public void onModuleLoad() {
        getUserEmail();
        HTML mHTML = new HTML();
        mHTML.setHTML("<HTML><BODY> Logged in as " + userEmail + "</BODY></HTML>");
        RootPanel.get().add(mHTML);
}

public void getUserEmail(){

    requestFactory.getUserEmailRequest().getUserEmail().fire(
        new Receiver<String>()  {
                @Override
                public void onSuccess(String result) {
                        userEmail = result; 
                    }
                }); 
}
4

1 に答える 1

3

メソッド getUserEmail() はAsynchronous Method Callです。callBack の後にコードを実行する場合は、内部クラスに記述する必要があります。

public void getUserEmail(){

requestFactory.getUserEmailRequest().getUserEmail().fire(
    new Receiver<String>()  {
            @Override
            public void onSuccess(String result) {
                    userEmail = result; 

                    HTML mHTML = new HTML();
                    mHTML.setHTML("<HTML><BODY> Logged in as " + userEmail + "</BODY></HTML>");
                    RootPanel.get().add(mHTML);
                }
            }); 
}
于 2013-11-02T23:54:29.323 に答える