私のログイン ベースのアプリケーションでは、ログインしているユーザーのユーザー名を常に知る必要があります。(MVP) . したがって、URLからユーザー名を取得していますが、ログインが成功した後にページが開いたときに、URLからユーザー名を取得できません。存在しないように見えますが、そこにあります。リフレッシュ後にのみ機能します。次に、ユーザー名を取得できます。
URL は の形式http://127.0.0.1:8888/AdministrareBloc.html#AdminPlace:admin
で、文字列を分割して管理部分のみを取得します。
これは、ユーザーを確認する前にコードをダウンロードするためだと思いました。そこで、次のようにコードに分割ポイントを配置しました:(正しく配置したかどうかはわかりません)
loginButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
final String username = usernameBox.getText();
final String password = passwordBox.getText();
GWT.runAsync(new RunAsyncCallback() {
@Override
public void onSuccess() {
performUserConnection(username, password);
}
@Override
public void onFailure(Throwable reason) {
// TODO Auto-generated method stub
}
});
}
});
private static void performUserConnection(String username, String password) {
DBConnectionAsync rpcService = (DBConnectionAsync) GWT.create(DBConnection.class);
ServiceDefTarget target = (ServiceDefTarget) rpcService;
String moduleRelativeURL = GWT.getModuleBaseURL() + "DBConnectionImpl";
target.setServiceEntryPoint(moduleRelativeURL);
rpcService.authenticateUser(username, password, new AsyncCallback<User>() {
@Override
public void onSuccess(User user) {
if (user.getType().equals("User")) {
String username = user.getUsername();
presenter.goTo(new UserPlace(username));
} else if (user.getType().equals("Admin")) {
String username = user.getUsername();
presenter.goTo(new AdminPlace(username));
}
}
}
}
これは、ユーザーがログイン ボタンをクリックしたときに発生します。スプリットポイントは正しく配置されていますか?ログインに成功した後、ページを更新せずにユーザー名を取得するにはどうすればよいですか?
アップデート
私は今日、AdminViewImpl と UserViewImpl 内に Window.Location.reload() を配置するというトリックを試しました。アプリケーションが起動すると、ページが毎秒リロードされるため、分割ポイントが正しく使用されておらず、ブラウザーは実際に必要になる前にコードをダウンロードします。そのため、更新後にユーザー名を確認できます。コードが再ダウンロードされ、更新時に既にログインしているためです。
前もって感謝します