将所有请求重定向到Wicket中的特定页面

时间:2016-09-14 11:31:39

标签: java jboss wicket wicket-6

我使用的是Wicket 6.x,我希望在维护中实现经典的网站#34;页面,应根据条件将所有请求重定向到该页面。

但是,我不想在每个页面上编写重定向检查,因为这样做是多余的。

有没有办法可以拦截所有请求,进行检查,并在必要时从一个地方执行重定向?

1 个答案:

答案 0 :(得分:3)

您可以使用IRequestCycleListener#onBeginRequest()+ requestCycle.setResponsePage(MaintainancePage.class)

在MyApp#init()中注册您的监听器:getRequestCycleListeners().add(new MaintainanceListener())

这是一个可能的解决方案:

public class MaintainanceListener extends AbstractRequestCycleListener {

    @Override
    public void onRequestHandlerResolved(RequestCycle cycle, IRequestHandler handler) {
        super.onRequestHandlerResolved(cycle, handler);
        if (handler instanceof IPageRequestHandler && isMaintainanceMode()) {
            final Class<? extends IRequestablePage> pageClass = ((IPageRequestHandler) handler).getPageClass();
            if (MaintenancePage.class != pageClass) {
                final MySession session = MySession.get();
                if (session.getUser() != null) {
                    session.invalidateNow();
                }
                cycle.setResponsePage(MaintenancePage.class);
            }
        }
    }
}