GWT从网址获取用户名仅在刷新

时间:2016-05-30 20:03:03

标签: java gwt login code-splitting

我的基于登录的应用程序,需要始终知道登录用户的用户名。 (MVP)。所以我从网址获取了用户名,但是当登录成功后页面打开时,我无法从网址获取用户名,因为它似乎不存在,但它存在。它只在刷新后才有效。然后,我就可以获得用户名。

网址采用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(),当应用程序启动时,页面每秒重新加载一次,这对我来说意味着分裂点使用不正确,浏览器在实际需要之前下载代码,这就是为什么我能够在刷新后看到用户名,因为它重新下载了代码,我已经知道了我刷新时登录。

提前致谢

0 个答案:

没有答案