0

私のログイン ベースのアプリケーションでは、ログインしているユーザーのユーザー名を常に知る必要があります。(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() を配置するというトリックを試しました。アプリケーションが起動すると、ページが毎秒リロードされるため、分割ポイントが正しく使用されておらず、ブラウザーは実際に必要になる前にコードをダウンロードします。そのため、更新後にユーザー名を確認できます。コードが再ダウンロードされ、更新時に既にログインしているためです。

前もって感謝します

4

0 に答える 0