JSF: Как перенаправить пользователя на другую страницу в соответствии со значением определенного атрибута сеанса FacesContext - PullRequest
1 голос
/ 10 февраля 2011

В моем приложении JSF мне нужно перенаправить пользователя со страницы A на страницу B, если атрибут сеанса, такой как userRole, имеет значение «contributor», и на страницу C, например, если это «author».

Мне сказали, что я должен реализовать прослушиватель страниц или, возможно, прослушиватель сеансов.Хотя я понимаю, что написание класса слушателя довольно просто и стандартно, я не знаю, как настроить его на самой странице JSF (для прослушивания сеанса).

Кто-нибудь?

1 Ответ

1 голос
/ 10 февраля 2011

Слушатель сеанса (HttpSessionListener) не подходит, так как не имеет ссылки на текущий HTTP-запрос / ответ, которые являются обязательными для изменения адресата запроса / ответа.

Используйте фильтр. Чтобы узнать больше о фильтрах, проверьте нашу метку на странице информации . Обратите внимание, что управляемые bean-объекты JSF в рамках сеанса сами по себе хранятся как атрибут HttpSession с именем управляемого bean-компонента в качестве ключа. Вы можете получить к ним доступ в методе doFilter() следующим образом:

Bean bean = (Bean) ((HttpServletRequest) request).getSession().getAttribute("bean");

Или когда это должно быть определено на основе действия POST, просто верните другой результат в методе действия управляемого компонента. Тогда просто используйте (неявную) навигацию JSF. Псевдо:

public String submit() {
    if (user is contributor) return "pageB";
    if (user is author) return "pageC";
    return "pageA";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...