Управляемый компонент CDI в области сеанса не сохраняется в сеансе HTTP так же, как управляемый компонент JSF в области сеанса. Управляемый JSF в рамках сеанса действительно сохраняется в сеансе под именем компонента в качестве ключа. Управляемый компонентом CDI в рамках сеанса, однако, абстрагируется дальше через другую карту в области сеанса.
Вам нужно получить его, оценивая EL программно, а не извлекая его из карты сеанса. Ваша попытка распознавателя EL имеет одну ошибку, значение не содержит выражения #{}
.
ELContext elContext = FacesContext.getCurrentInstance().getELContext();
UserManager userManager = (UserManager) FacesContext.getCurrentInstance().getApplication()
.getELResolver().getValue(elContext, null, "user");
Исправьте это соответственно:
ELContext elContext = FacesContext.getCurrentInstance().getELContext();
UserManager userManager = (UserManager) FacesContext.getCurrentInstance().getApplication()
.getELResolver().getValue(elContext, null, "#{user}");
Кстати, сокращенное обозначение выше: Application#evaluateExpressionGet()
:
UserManager userManager = context.getApplication()
.evaluateExpressionGet(context, "#{user}", UserManager.class);
Обратите внимание, что FacesContext context
также уже есть в качестве аргумента метода.