Калитка: как перенаправить к другой странице?

Как я перенаправляю к другой странице с помощью Калитки? IIRC, некоторое исключение должно быть выдано в конструкторе, но я не помню который.Заранее спасибо.

20
задан Mot 26 July 2010 в 12:40
поделиться

2 ответа

Создание исключения RestartResponseAtInterceptPageException сделает это, как вы отметили в своем собственном ответе, но на самом деле это часть системы, позволяющей перенаправление с возможным продолжением на текущей странице (часто является частью процесса авторизации ). Если это не ваша ситуация, но вам все равно нужно сделать что-то, что прерывает обработку, может быть лучше выбросить исключение RestartResponseException .

Я знаю, что в основном RestartResponseAtInterceptPageException используется в процессе «перенаправления на страницу входа». Если вы используете аутентификацию на основе ролей, реализация IAuthorizationStrategy при определении того, что вы не вошли в систему, будет сигнализировать настроенному IUnauthorizedComponentInstantiationListener , обычно AuthenticatedWebApplication который вызывает это исключение, если вы не вошли в систему, с перенаправлением на настроенную страницу входа. (Если вы вошли в систему, но не авторизовались, произойдет что-то еще ...).

Фактическое перенаправление выполняется PageMap , которая также в этом случае запоминает страницу, на которую вы пытались перейти. После успешного входа на страницу входа в систему может потребоваться отправить вас на страницу, которую вы пытались открыть изначально, путем вызова continueToOriginalDestination () , который является методом в Компоненте , и извлекает запомненную страницу. из PageMap .

Есть хороший пример кода для этого процесса аутентификации, но исключение и перехват в некоторой степени скрыты за кулисами.

29
ответ дан 29 November 2019 в 22:56
поделиться

Быстрый поиск всех *Exception.java файлов в фиче выявил это. Нужно бросить RestartResponseAtInterceptPageException:

public MyPage() {
   ...
   if (redirect) {
       throw new RestartResponseAtInterceptPageException(targetPage);
   }
   ...
}
5
ответ дан 29 November 2019 в 22:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: