У меня проблема с сохранением результата 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);
- это Composite, который добавляется в мой RootLayoutPanel.Он содержит DivElement, для которого InnerText устанавливается с помощью shell.setError (String).Оболочка также имеет LoginWidget с SpanElement, для которого InnerText устанавливается shell.getLoginWidget (). setUserName (String).userName, очевидно, является строкой, которая инициализируется значением «default».
Проблема заключается в том, что shell.setError («userName равно« + userName + »!»);(внутри AsyncCallback) устанавливает InnerText для того, кто в данный момент вошел в систему. НО shell.getLoginWidget (). setUserName (userName);(вне AsyncCallback) устанавливает InnerText в значение «по умолчанию».
Я пробовал так много разных вещей, и все они, похоже, имеют одну и ту же проблему с областью видимости.Что меня действительно смущает, так это то, что этот пример демонстрирует практически ту же технику для сохранения результата RPC.