Error handling 如何为弹出窗口和其他特殊页面使用不同的Wicket过期/错误页面?

Error handling 如何为弹出窗口和其他特殊页面使用不同的Wicket过期/错误页面?,error-handling,wicket,Error Handling,Wicket,我的wicket应用程序中有一个自定义错误和过期页面。但在某些情况下,我希望它们的行为有所不同(例如,在弹出窗口中,不应将我们重定向到主页) 解决方案有哪些选项?我假设我可以从请求对象读取错误/过期页面中的页面参数(例如“errorpage=no”)。但我如何才能以最佳方式将此查询参数添加到特定页面 我很确定有人已经解决了这个问题,所以这将是一个很好的机会在这里分享一个很好的解决方案 相对类似的问题: 您可以注册一个RequestCycleListener,它侦听“OneException”,并

我的wicket应用程序中有一个自定义错误和过期页面。但在某些情况下,我希望它们的行为有所不同(例如,在弹出窗口中,不应将我们重定向到主页)

解决方案有哪些选项?我假设我可以从请求对象读取错误/过期页面中的页面参数(例如“errorpage=no”)。但我如何才能以最佳方式将此查询参数添加到特定页面

我很确定有人已经解决了这个问题,所以这将是一个很好的机会在这里分享一个很好的解决方案

相对类似的问题:

您可以注册一个RequestCycleListener,它侦听“OneException”,并根据RequestCycle的不同处理异常,否则返回默认实现

(代码基于Wicket 6.6)


实际上,最棘手的部分是使用URL和/或参数调用特定页面,这些URL和/或参数可以在RequestCycleListener或错误页面实现中检测到。最简单的方法之一是使用mount(“popup”,PopupPage.class)。这不适用于继承的页面,但也可以通过更复杂的MountedMapper来解决。
        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);
        }
    });