Как перенаправить из ManagedBean, если отправленный запрос является Ajax-запросом? - PullRequest
16 голосов
/ 17 мая 2011

Я использую PrimeFaces с JSF2.Я пытаюсь аутентифицировать пользователя, отправив логин и пароль в виде Ajax-запроса.И в методе действия компонента поддержки я пытаюсь проверить пользователя и перенаправить в новое представление, если проверка прошла успешно.

Возможно ли это при использовании простых лиц?

Поскольку я думаю, что с простыми лицами p:commandButton, я могу иметь только поведение ajax или навигацию.

Ответы [ 2 ]

29 голосов
/ 17 мая 2011

Да, просто отправьте перенаправление вместо (по умолчанию) пересылки в качестве результата. Путь JSF 2.0 без <navigation-case> будет добавлять ?faces-redirect=true к строке результата в методе действия.

* 1005 Е.Г. *

public String login() {
    // ...
    return "home?faces-redirect=true";
}
16 голосов
/ 18 мая 2011

Вот еще один прием, который может оказаться полезным.Это когда вы вызываете метод через AJAX из атрибута Primefaces, который не реализует навигацию.Например, у меня есть объект ap: tree с методом, выбранным nodeSelectionListener.

В этом методе вы можете вызвать перенаправление следующим образом:

String url = (something)
FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext ec = fc.getExternalContext();
try {
        ec.redirect(url);
} catch (IOException ex) {
        Logger.getLogger(Navigation.class.getName()).log(Level.SEVERE, null, ex);
}

Надеюсь, вы найдете это полезным.1006 *

...