Redirect 会话超时后的Wicket setResponsePage

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

这是我的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 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仍然存在,这可能解释了这种混乱。