GWTP 如何在应用程序上执行代码 initialization/start

GWTP how to execute code on application initialization/start

我想在应用程序启动时对服务器执行异步调用(已加载到用户浏览器中)。

我使用 RestyGWT 与服务器通信。

应用程序启动时,我想调用服务器检查用户是否登录(他的 cookie/token 是否仍然有效)? 如果令牌仍然有效,我想将用户重定向到登录用户的页面。如果不是,我想重定向到 login 页面

我也想为 内部客户端应用程序 urls 工作,例如:http://localhost:8080/cms/#/admin。当我从应用程序内部输入此 url 时,它起作用了。当我输入此 url 时,它会将我重定向到默认页面。

请帮忙。

这是我的服务执行代码:

service.isCurrentUserLoggedIn(new MethodCallback<Boolean>() {
    @Override
    public void onFailure(Method method, Throwable exception) {
    MaterialToast.fireToast("Fail to check is current user logged in " + method + " " + exception.getLocalizedMessage());
    }

    @Override
    public void onSuccess(Method method, Boolean response) {
    currentUser.setLoggedIn(response);
    getView().setLoginButtonVisbility(response);
    }
});

我在 class 构造函数的 AppPresenter 中完成了此操作,但我认为这是错误的。

我认为,如果您移出构造函数并移入 onBind() 方法,应该就足够了。虽然我假设这是在您的演示者中显示在 root 中,而您的其他演示者在 root 演示者插槽中显示。

解决方案是创建自己的 Bootstrapper class 来实现 com.gwtplatform.mvp.client.Bootstrapper

并在此 class 中执行方法 void onBootstrap(),我在其中执行 service.isCurrentUserLoggedIn(new MethodCallback<Boolean>() {}) 然后根据回答结果,重定向到登录或当前位置。

Here is official documentation.