Redirect 会话超时后的Wicket setResponsePage
这是我的Wicket 1.5应用程序登录页面的Redirect 会话超时后的Wicket setResponsePage,redirect,wicket,session-timeout,Redirect,Wicket,Session Timeout,这是我的Wicket 1.5应用程序登录页面的onSubmit()方法: @Override public void onSubmit() { super.onSubmit(); User theUser = loginForm.getModelObject(); /* call a DAO function to check the user's credentials */ if(/* DAO call succeeds*/) { MyCustomeSession auth
onSubmit()
方法:
@Override
public void onSubmit() {
super.onSubmit();
User theUser = loginForm.getModelObject();
/* call a DAO function to check the user's credentials */
if(/* DAO call succeeds*/) {
MyCustomeSession authSession = (MyCustomSession)Session.get();
authSession.success("Welcome, " + theUser.getFullName());
setResponsePage(new HomePage());
}
else {
loginForm.error("Username or password was incorrect");
}
}
这对于初次登录很好,对于注销,然后再重新登录,因为接下来看到的是带有欢迎消息的主页
会话超时时,此应用程序会将用户重定向回同一登录页面,并显示一条反馈消息“您的会话已过期等等”,并允许用户再次输入用户名和密码。如果用户这样做,则登录成功:隐藏的菜单变为可见,欢迎消息显示,等等
但是,显示的页面仍然是登录页面,并包含所需用户名和密码的其他反馈消息(即使两者都已输入且登录成功)。以下是一个截图:
维克特有什么奇怪的事吗?是否有修复或解决方法?嗯,似乎是
应用程序的页面。setPageExpiredErrorPage(page)
随后无法执行setResponsePage(new HomePage())代码>但必须改为执行setRepsonsePage(HomePage.class)代码>
同时,当此登录页面只是一个普通页面时,即首次登录或注销后,它必须使用setResponsePage(new HomePage())代码>这没有多大意义,但这似乎是Wicket的方式
因此,我向名为isTimeout
的LoginPage构造函数添加了一个布尔值,并相应地调用了setResponsePage
的一个或另一个版本。好吧,似乎是应用程序的页面。setPageExpiredErrorPage(page)
随后无法执行setResponsePage(新主页())代码>但必须改为执行setRepsonsePage(HomePage.class)代码>
同时,当此登录页面只是一个普通页面时,即首次登录或注销后,它必须使用setResponsePage(new HomePage())代码>这没有多大意义,但这似乎是Wicket的方式
因此,我向名为isTimeout
的LoginPage构造函数添加了一个布尔值,并相应地调用了一个或另一个版本的setResponsePage
。这是左字段,但在setResponsePage()之后是否需要setRedirect(true)?如果我已经6个月没有编码了,我可能应该停止评论了。@jbrookover:Wicket的组件类没有setRedirect这样的方法。您可能一直在考虑一个不同的框架?Wicket 1.4仍然有,这可能解释了混淆。这是左字段之外的,但是在setResponsePage()之后是否需要setRedirect(true)?如果我已经6个月没有编码了,我可能应该停止评论了。@jbrookover:Wicket的组件类没有setRedirect这样的方法。您可能一直在考虑一个不同的框架?Wicket 1.4仍然存在,这可能解释了这种混乱。