最近Wicket让我遇到了Session的另一个问题。在普通的Web应用程序中,我们所做的只是在web中声明session-timeout。 xml,它对我们来说很好。但是在wicket中指定web.xml中的会话超时不再有效。但是我的应用程序需要会话超时。此外,我无法为每个类实现Ajax行为或Ajax Timer来检查会话超时。这就是为什么我需要一些时间来实现会话超时以使我的程序工作。任何帮助表示赞赏。
我的wicket版本是6.3.0。
答案 0 :(得分:1)
Wicket根本不管理会话持续时间。我认为你错误配置了你的servlet容器。尝试使用空的Wicket项目来验证我说的内容。
答案 1 :(得分:1)
如果您需要处理会话超时,可以使用Application
init
方法设置处理程序:
getApplicationSettings().setPageExpiredErrorPage(MyExpiredPage.class);
更多信息here。
答案 2 :(得分:1)
好吧,如果你想以编程方式进行...
这是我使用Wicket 1.5.7
(Pax-Wicket)和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);
}
}