java - 如何在进行异步 RPC 时调用 GWT 方法

标签 java javascript gwt

我有一个使用 GWT 的网站,该网站使用 Spring 进行保护,超时时间为......假设一个小时。作为该过程的一部分,我尝试在 session 过期前 5 分钟实现客户端 session 超时警告。

我已经为其编写了 Javascript,它利用了 cookie。定时器的作用是初始设置定时器,并且有一个重置定时器的方法,可以通过本地方法在GWT中使用。

function resetSessionTimeout() { //update the cookie for the expected timeout
    var date = new Date();
    var timeoutTime = 55 * 60 * 1000;
    date.setTime(date.getTime() + timeoutTime);
    createCookie('timeout', date.getTime(), 1);
}

每当对服务器进行 RPC 时,基于服务器的 session 超时都会刷新,因此在使用任何类型的异步调用后初始计时器不再准确。上面的函数将使用正确的超时时间更新客户端。

绝对有效的选项是调用一个 native void,它从我使用异步调用的每个方法调用 $wnd.resetSessionTimeout()。然而,方法很多,可扩展性很差,而且实现起来很糟糕。

有没有办法让我设置客户端部分来观察 RPC 何时被创建和接收,然后将 native void 放入 MVP 级别而不是每个方法中,即是否有 RPC 观察者或监听器?

最佳答案

你可以这样做:

public class MyCallback<T> implements AsyncCallback<T> {

    public MyCallback() {
    }

    @Override
    public void onFailure(T result) {
        /*
         * Show standard error message. You can override it
         * with a more specific message where necessary.
         */
    }

    @Override
    public void onSuccess(T result) {
        execute(result);
        // Call your timer, etc.
    }

    protected void execute(T result) {
        // Override this method when making calls.
    }
}

现在您可以用 MyCallback 替换所有 AsyncCallback 对象。作为额外的好处,除非您想要特定的错误消息,否则您不必每次都重写 onFailure。

关于java - 如何在进行异步 RPC 时调用 GWT 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26306671/

相关文章:

java - 您建议使用什么结构来保存一堆字符串对象关联?

java - Spring Security jwt单元测试

javascript - 使用 jquery 内联编辑超链接

javascript - 为什么我的 Bootstrap v4 导航栏不能正确显示?

GWT 请求工厂 : how to use single EntityManager per request

java - 如何使用 GWT RPC 在客户端保存文件?

java - 编译依赖于版本 0.3.150227 google-cloud-dataflow-java-sdk-all 的 gradle 项目时出错

java - Oracle 准备语句 - ORA-01821 : date format not recognized

javascript - 从数组javascript中检索元素

java - 在 Eclipse 中运行 Maven GWT 应用程序的问题