В JSF 2.x создание HttpSession
максимально откладывается, чтобы избежать ненужного создания сеанса.Он будет создан только тогда, когда это действительно необходимо .Очевидно, он еще не был создан в тот момент, когда вы его называете.Передача false
в getSession()
означает, что контейнер не должен автоматически создавать его, если он не существует.Так что, если он еще не существует, он просто вернет null
.
Вам нужно вместо этого передать true
в getSession()
.
HttpSession httpsess = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
См. Также:
Не связано с конкретной проблемой, это кодовый запах.Для чего именно вам нужен HttpSession
?Чтобы получить / установить некоторые атрибуты?Почему бы просто не сделать это свойством управляемого bean-объекта области действия сеанса?Управляемый компонент JSF в области сеанса сам по себе уже сохранен как атрибут сеанса.