我有一个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;
}
});
}
答案 0 :(得分: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);
}
});
}