Как я перенаправляю к другой странице с помощью Калитки? IIRC, некоторое исключение должно быть выдано в конструкторе, но я не помню который.Заранее спасибо.
Создание исключения RestartResponseAtInterceptPageException
сделает это, как вы отметили в своем собственном ответе, но на самом деле это часть системы, позволяющей перенаправление с возможным продолжением на текущей странице (часто является частью процесса авторизации ). Если это не ваша ситуация, но вам все равно нужно сделать что-то, что прерывает обработку, может быть лучше выбросить исключение RestartResponseException
.
Я знаю, что в основном RestartResponseAtInterceptPageException
используется в процессе «перенаправления на страницу входа». Если вы используете аутентификацию на основе ролей, реализация IAuthorizationStrategy
при определении того, что вы не вошли в систему, будет сигнализировать настроенному IUnauthorizedComponentInstantiationListener
, обычно AuthenticatedWebApplication
который вызывает это исключение, если вы не вошли в систему, с перенаправлением на настроенную страницу входа. (Если вы вошли в систему, но не авторизовались, произойдет что-то еще ...).
Фактическое перенаправление выполняется PageMap
, которая также в этом случае запоминает страницу, на которую вы пытались перейти. После успешного входа на страницу входа в систему может потребоваться отправить вас на страницу, которую вы пытались открыть изначально, путем вызова continueToOriginalDestination ()
, который является методом в Компоненте
, и извлекает запомненную страницу. из PageMap
.
Есть хороший пример кода для этого процесса аутентификации, но исключение и перехват в некоторой степени скрыты за кулисами.
Быстрый поиск всех *Exception.java
файлов в фиче выявил это. Нужно бросить RestartResponseAtInterceptPageException
:
public MyPage() {
...
if (redirect) {
throw new RestartResponseAtInterceptPageException(targetPage);
}
...
}