如何解决为什么异常处理程序中的 RestartResponseException 不重定向到其他页面?
我在异常处理程序 (IRequestCycleListener) 中使用 RestartResponseException 进行登录页面重定向,但它不起作用。我在日志中看到异常,但用户界面没有变化。
@Override
public IRequestHandler onException(RequestCycle cycle,Exception ex) {
if (CouldNotLock) {
getSessionStore().invalidate(cycle.getRequest());
throw new RestartResponseException(LoginPage.class);
}
return null;
}
解决方法
即使在问题评论中提供了额外的信息,仍然不清楚您面临什么样的问题。
我会猜测:您的 LoginPage 会检查用户是否已经登录,然后重定向到您的应用程序的登录/主页。
要解决您需要使整个会话无效的问题:
@Override
public IRequestHandler onException(RequestCycle cycle,Exception ex) {
if (couldNotLock) {
Session.get().invalidate(); // !!!
throw new RestartResponseException(LoginPage.class);
}
return null;
}
,
尝试抛出 new RestartResponseAtInterceptPageException(LoginPage.class)
而不是 RestartResponseException
如果没有其他帮助,您可以使用 javascript 修改页面的 URL。
@Override
public void renderHead(IHeaderResponse response) {
super.renderHead(response);
response.render(JavaScriptHeaderItem.forScript("window.history.pushState(\"object or string\",\"" + pageTitle + "\",\"" + pageUrl + "\")"));
}
对于 AJAX:
AjaxRequestTarget target = optional.get();
target.prependJavaScript("window.history.pushState(\"object or string\",\"" + pageUrl + "\")");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。