【发布时间】:2011-10-10 21:54:29
【问题描述】:
我在保存 RPC 的结果时遇到问题。基本上调用是成功的,但是当我尝试将它保存在一个变量中时,它似乎超出了范围。
private String userName = "default";
authService.retrieveUserData(new AsyncCallback<UserData>() {
@Override
public void onSuccess(UserData result) {
userName = result.getUserName();
shell.setError("The userName is " + userName + "!");
}
@Override
public void onFailure(Throwable caught) {
//I've checked and it is not failing.
}
});
shell.getLoginWidget().setUserName(userName);
shell 是添加到我的 RootLayoutPanel 的 Composite。它包含一个 DivElement,其 InnerText 由 shell.setError(String) 设置。 shell 也有一个带有 SpanElement 的 LoginWidget,其 InnerText 由 shell.getLoginWidget().setUserName(String) 设置。 userName 显然是一个初始化为“default”的字符串。
问题在于 shell.setError("The userName is " + userName + "!"); (在 AsyncCallback 内)将 InnerText 设置为当前登录的人。但是 shell.getLoginWidget().setUserName(userName); (在 AsyncCallback 之外)将 InnerText 设置为“默认”。
我尝试了很多不同的东西,但它们似乎都有相同的范围问题。真正让我感到困惑的是,this 示例显示了几乎完全相同的技术来保存 RPC 的结果。
【问题讨论】: