RPC 결과를 저장하는 데 문제가 있습니다. 기본적으로 호출은 성공적이지만 변수에 저장하려고하면 범위를 벗어나는 것처럼 보입니다.GWT 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에 추가 된 복합체입니다. 그것은 InnerText가 shell.setError (String)에 의해 설정된 DivElement를 포함합니다. 쉘에는 또한 InnerText가 shell.getLoginWidget(). setUserName (String)에 의해 설정된 SpanElement가있는 LoginWidget이 있습니다. userName은 분명히 "default"로 초기화되는 String입니다.
문제는 shell.setError ("사용자 이름은"+ userName + "!")입니다. (AsyncCallback 내부)는 현재 로그인되어있는 사람에게 InnerText를 설정합니다. 그러나 shell.getLoginWidget(). setUserName (userName); (AsyncCallback 외부)는 InnerText를 "default"로 설정합니다.
나는 많은 다른 것들을 시도했으며 모두 동일한 범위 문제가있는 것처럼 보입니다. 실제로 나를 혼란스럽게하는 것은 this 예제는 RPC 결과를 저장하는 것과 거의 똑같은 기술을 보여줍니다.