Подтвердить что ты не робот

Как перенаправить из ManagedBean, когда отправленный запрос является запросом Ajax?

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

Возможно ли это при использовании перформансов?

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

4b9b3361

Ответ 1

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

например.

public String login() {
    // ...
    return "home?faces-redirect=true";
}

Ответ 2

Вот еще один метод, который может вам пригодиться. Это когда вы вызываете метод через AJAX из атрибута Primefaces, который не реализует навигацию. Например, у меня есть объект p: 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);
}

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