Как получить исходное назначение в калитке, например: я нажал одну ссылку на странице, но затем перенаправил ее на страницу входа, так как она требует аутентификации, но мне нужно знать в Java-коде, что первоначальный пункт назначения (ссылка, которую я нажал до входа в систему), поскольку мне нужно применить некоторые проверки (для этой конкретной ссылки).Как получить исходное назначение в wicket
ответ
Вы можете установить переменный сеанс на ссылку мыши, как показано ниже:
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 (это);
Спасибо за ваш ответ. –
Но я хочу знать, что является исходным пунктом назначения, прежде чем отправиться туда. –
См. Мой обновленный ответ. – Mihir