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

Java 将所有请求重定向到Wicket中的特定页面,java,jboss,wicket,wicket-6,Java,Jboss,Wicket,Wicket 6,我使用的是Wicket 6.x,我想实现经典的“维护中的站点”页面,所有请求都应该根据条件重定向到该页面 但是,我不想在每个页面上都写重定向检查,因为这是多余的 是否有一种方法可以从一个地方截获所有请求、执行检查并在必要时执行重定向???您可以使用IRequestCycleListener#onBeginRequest()+requestCycle.setResponsePage(MaintenancePage.class) 在MyApp#init()中注册您的侦听器:getRequestCyc

我使用的是Wicket 6.x,我想实现经典的“维护中的站点”页面,所有请求都应该根据条件重定向到该页面

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


是否有一种方法可以从一个地方截获所有请求、执行检查并在必要时执行重定向???

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

在MyApp#init()中注册您的侦听器:
getRequestCycleListeners()。添加(新的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);
            }
        }
    }
}
公共类维护侦听器扩展AbstractRequestCycleListener{
@凌驾
onRequestHandlerResolved公共无效(RequestCycle cycle,IRequestHandler){
super.onRequestHandlerResolved(循环,处理程序);
if(IPageRequestHandler的处理程序实例(&isMaintainanceMode()){

最后一个类您可以使用IRequestCycleListener#onBeginRequest()+
requestCycle.setResponsePage(maintancePage.Class)

在MyApp#init()中注册您的侦听器:
getRequestCycleListeners()。添加(新的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);
            }
        }
    }
}
公共类维护侦听器扩展AbstractRequestCycleListener{
@凌驾
onRequestHandlerResolved公共无效(RequestCycle cycle,IRequestHandler){
super.onRequestHandlerResolved(循环,处理程序);
if(IPageRequestHandler的处理程序实例(&isMaintainanceMode()){

最后一个类谢谢,虽然这本身会生成一个重定向循环,但原因很明显。如果请求的页面是维护页面,我必须在路径上添加一个检查以跳过重定向。此外,在请求主页时,这会使我的网站崩溃()。仍然需要了解为什么会发生链接,尽管这本身会生成重定向循环,原因很明显。如果请求的页面是维护页面,我必须在路径上添加检查以跳过重定向。此外,在请求主页()时,这会使我的网站崩溃。仍然需要了解原因