Как перенаправить из ManagedBean, когда отправленный запрос является запросом Ajax?
Я использую PrimeFaces с JSF2. Я пытаюсь аутентифицировать пользователя, отправляя логин и пароль как запрос Ajax. И в методе действий подстановки bean, я пытаюсь проверить пользователя и перенаправить на новое представление, если проверка прошла успешно.
Возможно ли это при использовании перформансов?
Потому что я думаю, что с помощью p:commandButton
, я могу только иметь ajax-поведение или навигацию.
Ответы
Ответ 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);
}
Надеюсь, вы сочтете это полезным.