gwt客户端会话超时

时间:2011-09-08 08:33:54

标签: gwt smartgwt gwt-ext gwt-platform

我正在使用gwt 2.3和gwtp框架。在这个应用程序中,我想保持5分钟的会话时间。这意味着如果当前用户没有做5分钟,他在5分钟后来到他的第一个事件/屏幕上的动作他应该被注销。 在gwt中有一个名为Timer的类,可用于此问题。但我没有得到如何在屏幕上识别用户的动作。我确实在谷歌上,&发现gwt-ext.Below的代码是gwt-ext

的代码
Ext.get(“pagePanel”).addListener(“click”, new EventCallback() {
    @Override
    public void execute(EventObject e) {
        MessageBox.alert(“On Mouse Click”);
    }
});

Ext.get(“pagePanel”).addListener(“keydown”, new EventCallback() {

    @Override
    public void execute(EventObject e) { 
        MessageBox.alert(“On Key Press Click”);
    }
});

在上面的代码标签中正常工作,所以我附上了获取此代码的链接。here

我在gwt中查找相同类型的代码。如果还有其他更好的方法,请告诉我。提前致谢

1 个答案:

答案 0 :(得分:3)

如果行动/事件真的可以实现,我会用 NativePreviewHandler以下列方式解决它:

boolean expired;

final Timer logoutTimer = new Timer() {
    @Override
    public void run() {
        expired = true;
    }
};

NativePreviewHandler nph = new NativePreviewHandler() {

    @Override
    public void onPreviewNativeEvent(NativePreviewEvent event) {
        if (!expired) {
            logoutTimer.cancel();
            logoutTimer.schedule(300000);
        } else {
            // do your logout stuff here
        }
    }
};

Event.addNativePreviewHandler(nph);

如果用户shell在5分钟后没有新操作就注销:

final Timer logoutTimer = new Timer() {
    @Override
    public void run() {
        // do your logout stuff here
    }
};

NativePreviewHandler nph = new NativePreviewHandler() {

    @Override
    public void onPreviewNativeEvent(NativePreviewEvent event) {
        // Of course do this only when logged in:
        logoutTimer.cancel();
        logoutTimer.schedule(300000);
    }
};

Event.addNativePreviewHandler(nph);