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