2013-04-28 37 views
1

最近Wicket把我放在Session的另一个问题。在正常的Web应用程序中,我们所做的只是在web中声明session-timeout。 XML和它对我们很好。但是在wicket中指定web.xml中的会话超时不再工作。但是,我需要会话超时才能处理我的应用程序。此外,我无法为每个班级实施Ajax行为或Ajax计时器来检查会话超时。这就是为什么我需要一些时间来实施会议时间,以便我的计划能够发挥作用。任何帮助表示赞赏。与Wicket会话超时

我的检票口版本是6.3.0。

+2

我用在web.xml会话超时和'setMaxInactiveInterval'(用户配置的持续时间)使用Wicket 1.4以来(至1.5.x版)没有任何问题。你使用什么版本? – 2013-04-28 19:11:29

+0

我的检票口版本是6.3.0 – Souvik 2013-04-28 19:17:16

回答

1

Wicket根本不管理会话持续时间。我认为你错误地配置了你的servlet容器。尝试用一个空的Wicket项目来验证我说的话。

1

如果您需要处理会话超时,您可以在Applicationinit方法设置处理程序:

getApplicationSettings().setPageExpiredErrorPage(MyExpiredPage.class); 

更多信息here

1

那么,如果你想这样做编程...

这是我如何做它用Wicket 1.5.7(大同检票口)和servlet-api。我将这段代码放在我的应用程序的基页面类中,所有页面都在其中扩展。

int sessionTimeout = // session timeout 
Request request = RequestCycle.get().getRequest(); 
if(request instanceof WebRequest) { 
    ServletWebRequest wr = (ServletWebRequest) request; 
    HttpSession session = wr.getContainerRequest().getSession(); 
    if(session != null) { 
    session.setMaxInactiveInterval(sessionTimeout); 
    } 
}