2016-09-14 10 views
0

Wicket 6.x를 사용하고 있으며 조건에 따라 모든 요청을 리디렉션해야하는 기존의 "유지 관리중인 사이트"페이지를 구현하고 싶습니다.모든 요청을 Wicket의 특정 페이지로 리디렉션

그러나 중복 될 수 있으므로 모든 페이지에 리디렉션 확인을 쓰고 싶지 않습니다.

모든 요청을 가로 채고, 수표를 처리하고, 필요한 경우 리디렉션을 실행할 수있는 방법이 있습니까?

답변

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); 
      } 
     } 
    } 
} 
+0

감사 :

여기에 가능한 솔루션입니다. 요청한 페이지가 유지 보수 일 경우 리다이렉트를 건너 뛰는 경로를 확인해야했습니다. 또한 홈페이지 (http://example.com/)를 요청할 때 내 사이트가 충돌합니다. 아직도 이해해야합니다. –

+0

예제를 사용하여 답변을 업데이트했습니다. –

관련 문제