我的检票口应用程序中有一个自定义错误和过期页面。但在某些情况下,我希望它们的行为有所不同(例如,在不应将我们重定向到主页的弹出窗口中)。
解决方案有哪些选择?我假设我可以从请求对象中读取错误/过期页面中的页面参数(例如“errorpage=no”)。但是如何以最佳方式将此查询参数添加到特定页面..?
我很确定有人已经解决了这个问题,所以这将是一个在这里分享一个很好的解决方案的好机会..
我的检票口应用程序中有一个自定义错误和过期页面。但在某些情况下,我希望它们的行为有所不同(例如,在不应将我们重定向到主页的弹出窗口中)。
解决方案有哪些选择?我假设我可以从请求对象中读取错误/过期页面中的页面参数(例如“errorpage=no”)。但是如何以最佳方式将此查询参数添加到特定页面..?
我很确定有人已经解决了这个问题,所以这将是一个在这里分享一个很好的解决方案的好机会..
您可以只注册一个 RequestCycleListener 来侦听“onException”并根据 RequestCycle 以不同方式处理异常,否则将回退到默认实现。
(基于 Wicket 6.6 的代码)
getRequestCycleListeners().add(new AbstractRequestCycleListener() {
@Override
public IRequestHandler onException(RequestCycle cycle, Exception ex) {
if (ex instanceof PageExpiredException) {
//handle your pageExpiredException...
if (something) {
return new RenderPageRequestHandler(new PageProvider(HomePage.class));
}
}
return super.onException(cycle, ex);
}
});