GWTP如何在应用程序初始化/启动时执行代码

时间:2016-03-11 11:15:17

标签: gwtp gwt-platform gwt-places

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

要与服务器通信,我使用RestyGWT。

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

我也想在内部客户端应用网址中使用此功能,例如:http://localhost:8080/cms/#/admin。当我从应用程序内部输入此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);
    }
});

我在类构造函数中已经在AppPresenter中完成了这个,但我认为这是错误的。

2 个答案:

答案 0 :(得分:0)

我认为如果你离开构造函数并进入onBind()方法就足够了。虽然我假设这是在你的主持人在root中显示,你的其他主持人在根节目主持人插槽中显示。

答案 1 :(得分:0)

解决方案是创建实现Bootstrapper

的自己的com.gwtplatform.mvp.client.Bootstrapper

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

Here is official documentation.