Перенаправление страницы JSF из Java-бина - PullRequest
34 голосов
/ 10 мая 2011

Есть ли способ, как перенаправить страницу на другую страницу из метода Java?

Я могу только переслать , используя:

FacesContext.getCurrentInstance().getExternalContext().dispatch("/foo.xhtml");

или используя правила навигации faces-config.xml.

У вас есть идеи?

Ответы [ 3 ]

61 голосов
/ 11 мая 2011

Не уверен, что вы после, но ExternalContext#dispatch() делает только пересылку, а не перенаправление. Вместо этого вы хотели бы использовать ExternalContext#redirect().

externalContext.redirect("foo.xhtml");

или даже внешний (что невозможно при отправке)

externalContext.redirect("http://stackoverflow.com");

Обычно вы хотели бы сделать это в методе действия bean-компонента.


Поскольку вы упомянули JavaScript в комментариях, вот как можно перенаправить с помощью JS:

window.location = "foo.xhtml";
// Or
window.location = "http://stackoverflow.com";
0 голосов
/ 19 февраля 2018

Пожалуйста, попробуйте вызвать следующую статическую функцию:

String url = "/meta/default/inbox"; // Your URL here

FacesContext.getCurrentInstance().getExternalContext().redirect(url);
0 голосов
/ 19 июня 2014
FacesContext.getCurrentInstance().getApplication().getNavigationHandler().handleNavigation(FacesContext.getCurrentInstance(), null, "page.xhtml");

Работает так же хорошо.

...