Навигация JSF перенаправляет к предыдущей странице

Можно легко транспонировать массив с zip.

a = [(1,2), (3,4), (5,6)]
zip(*a)
# [(1, 3, 5), (2, 4, 6)]
6
задан Tiny 26 July 2014 в 15:06
поделиться

6 ответов

Не уверен, но попробуйте сделать это с помощью средств ExternalContext :

Примерно так:

ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
externalContext.redirect(externalContext.encodeResourceURL(externalContext.getRequestContextPath()+getUrl()));
2
ответ дан 8 December 2019 в 17:25
поделиться

Вы не описали какие-либо средства инфраструктуры, которые вы используете для аутентификации, поэтому я предполагаю, что вы выполняете аутентификацию в собственном коде. Вероятно, самым простым подходом было бы сохранить начальное место назначения в сеансе перед перенаправлением на страницу входа, а затем после успешного входа в систему вы можете проверить этот атрибут и перенаправить в нужное место. В частности, для JSF вы можете сделать это в методе действий, который обрабатывает вход в систему. На самом деле, я бы предложил использовать некоторую структуру для аутентификации, например Spring Security, потому что она делает такие вещи из коробки, и будет намного проще расширить вашу систему безопасности, если вам понадобятся некоторые дополнительные функции, хотя для этого нужны некоторые дополнительная конфигурация

0
ответ дан 8 December 2019 в 17:25
поделиться

Это исключение вызвано тем, что вы вызвали response.sendRedirect () и не заблокировали JSF от рендеринга нормального ответа. Вам нужно сообщить JSF, что ему не нужно обрабатывать обычный ответ, добавив

FacesContext.getCurrentInstance().responseComplete(); 

к методу действия.

Или, что еще лучше, просто не извлекайте HttpServletResponse из-под JSF. вытяжки, но вместо этого сделайте:

FacesContext.getCurrentInstance().getExternalContext().redirect(url);

Это автоматически вызовет responseComplete () , а также очистит ваш код от ненужных вещей Servlet API. См. Также ExternalContext API .

16
ответ дан 8 December 2019 в 17:25
поделиться

Вы опоздали, и это является исключением. Сделайте это в phaselistener до фазы отклика рендеринга.

-2
ответ дан 8 December 2019 в 17:25
поделиться

java.lang.IllegalStateException: Невозможно переслать после того, как ответ был зафиксирован

Исключение вполне понятно:

  • Ответ был зафиксирован.
  • Вы не можете переслать после того, как ответ был зафиксирован.

Что не имеет смысла?

0
ответ дан 8 December 2019 в 17:25
поделиться

Описано логика (вход в систему, перенаправьте) должно быть реализовано через механику фильтра. Также вы можете попробовать стандартные правила навигации JSF (если он может соответствовать вам корпус). И если вы все еще хотите отправить перенаправить на пользовательский URL-адрес и не хотите использовать фильтры, сделайте это в своем сервлете в фазе Render, а не в вашей форме JSF.

0
ответ дан 8 December 2019 в 17:25
поделиться
Другие вопросы по тегам:

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