如何在生成异步RPC时调用GWT方法

时间:2014-10-10 19:25:00

标签: java javascript gwt

我有一个网站,它利用了使用Spring保护的GWT,超时......让我们说一个小时。作为该过程的一部分,我试图在会话到期前5分钟实施客户端会话超时警告。

我已经为它编写了Javascript,它使用了cookies。该计时器适用于初始设置计时器,并具有重置计时器的方法,该计时器可通过本机方法在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时,都会刷新基于服务器的会话超时,因此在使用任何类型的异步调用后,初始计时器不再准确。上述函数将使用正确的超时时间更新客户端。

绝对有效的选项是调用一个本机void,它从调用{em> {我>每个方法使用异步调用调用$wnd.resetSessionTimeout()。然而,这是很多方法,并且可扩展性差,实施效果差。

有没有办法让我设置客户端部分以观察何时生成和接收RPC,然后将原生空间放在MVP级别而不是每个方法中,即是否存在RPC观察者或监听器?

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

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。