Java 将所有请求重定向到Wicket中的特定页面
我使用的是Wicket 6.x,我想实现经典的“维护中的站点”页面,所有请求都应该根据条件重定向到该页面 但是,我不想在每个页面上都写重定向检查,因为这是多余的Java 将所有请求重定向到Wicket中的特定页面,java,jboss,wicket,wicket-6,Java,Jboss,Wicket,Wicket 6,我使用的是Wicket 6.x,我想实现经典的“维护中的站点”页面,所有请求都应该根据条件重定向到该页面 但是,我不想在每个页面上都写重定向检查,因为这是多余的 是否有一种方法可以从一个地方截获所有请求、执行检查并在必要时执行重定向???您可以使用IRequestCycleListener#onBeginRequest()+requestCycle.setResponsePage(MaintenancePage.class) 在MyApp#init()中注册您的侦听器:getRequestCyc
是否有一种方法可以从一个地方截获所有请求、执行检查并在必要时执行重定向???您可以使用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()){
最后一个类谢谢,虽然这本身会生成一个重定向循环,但原因很明显。如果请求的页面是维护页面,我必须在路径上添加一个检查以跳过重定向。此外,在请求主页时,这会使我的网站崩溃()。仍然需要了解为什么会发生链接,尽管这本身会生成重定向循环,原因很明显。如果请求的页面是维护页面,我必须在路径上添加检查以跳过重定向。此外,在请求主页()时,这会使我的网站崩溃。仍然需要了解原因