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

时间:2013-04-16 19:42:04

标签: error-handling wicket

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

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

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

相对类似的问题: How to change Wicket behaviour on Page Expired

1 个答案:

答案 0 :(得分:3)

您可以注册一个侦听“onException”的RequestCycleListener,并根据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);
        }
    });