【发布时间】:2020-12-28 19:57:57
【问题描述】:
假设我的应用程序中有三个页面:SignInPage、HomePage 和 AnotherPage。 当我第一次打开应用程序时,它会显示 SignInPage。授权后,它会将我重定向到主页。之后,我手动打开另一个页面,重新启动 servlet 容器,然后按 F5 按钮。 wicket 再次将我重定向到 HomePage,而不是 AnotherPage。为什么会发生这种情况以及如何避免这种情况?
--
所有使用mountPage 方法挂载的页面。每个页面都是有状态的并且有@AuthorizeInstantiation 注解。应用程序类扩展了 AuthenticatedWebApplication 并覆盖了如下方法:
@Override
protected Class<? extends WebPage> getSignInPageClass() {
return SignInPage.class;
}
@Override
public Class<? extends Page> getHomePage() {
return HomePage.class;
}
另外,在配置中我有以下行:
getApplicationSettings().setPageExpiredErrorPage(ErrorSessionExpiredPage.class);
(但我从来没有看到这个页面打开过)
更新:
解决方法是在SignInPage类中加入如下代码:
@Override
protected void onBeforeRender() {
if (((AuthenticatedWebSession)Session.get()).isSignedIn()) {
continueToOriginalDestination();
setResponsePage(Application.get().getHomePage());
}
super.onBeforeRender();
}
【问题讨论】:
标签: wicket