2015-08-11 4 views
-1

Как получить исходное назначение в калитке, например: я нажал одну ссылку на странице, но затем перенаправил ее на страницу входа, так как она требует аутентификации, но мне нужно знать в Java-коде, что первоначальный пункт назначения (ссылка, которую я нажал до входа в систему), поскольку мне нужно применить некоторые проверки (для этой конкретной ссылки).Как получить исходное назначение в wicket

ответ

0

Вы можете установить переменный сеанс на ссылку мыши, как показано ниже:

 HttpServletRequest request = (HttpServletRequest) getWebRequest().getContainerRequest(); 
     request.getSession().setAttribute("linkclicked", "linkname"); 

Тогда в вашей калитке Application, добавьте запрос Слушатель прочитать переменный сеанс, хранящиеся выше и создать PageParameter для Страницы Логина. Перенаправить пользователя на страницу входа с параметром PageParameter. При успешном входе в систему вы можете получить это значение параметра и выполнить свою проверку перед вызовом метода getoOriginalDestinationPage.

Request Listener может быть чем-то следующим. Я не пробовал, но должен работать нормально.

getRequestCycleListeners().add(
      new AbstractRequestCycleListener() 
      { 
       public void onBeginRequest(RequestCycle cycle) 
       { 
        if(cycle.getRequest().getContainerRequest() instanceof HttpServletRequest) 
        { 
         HttpServletRequest containerRequest = 
           (HttpServletRequest)cycle.getRequest().getContainerRequest(); 

         String linkClicked = (String) containerRequest.getSession().getAttribute("linkclicked"); 
         PageParameters parameters = new PageParameters(); 
         parameters.add("link", linkClicked); 

         cycle.setResponse(new LoginPage(parameters)); 
        } 
       }; 
      } 
    ); 

Вы можете использовать component.continueToOriginalDestination() после успешного входа в систему.

/** 
    * @param component 
    */ 
    protected void gotoOriginalDestinationPage(Component component) { 
     component.continueToOriginalDestination(); 
     //If there was no interceptor page, so we reached here. In this case, go to home page. 
     setResponsePage(GarbageApp.get().getHomePage()); 
    } 

Если предположить, что Войти страница LoginPage.java, то внутри onSubmit/кнопки формы можно назвать выше способом, как gotoOriginalDestinationPage (это);

+0

Спасибо за ваш ответ. –

+0

Но я хочу знать, что является исходным пунктом назначения, прежде чем отправиться туда. –

+0

См. Мой обновленный ответ. – Mihir