Вот объявление управляемого компонента:
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean(name = "user")
@SessionScoped
public class UserConsoleAction extends UserAction implements Serializable {
И следующий код из сервлета возвращает ноль:
UserConsoleAction uca = (UserConsoleAction) req.getSession().getAttribute("user");
Это старый код, написанный на JSF 1, и теперь используется JSF 2.2.
Это работало нормально и смогло получить управляемый компонент из сеанса, когда управляемый компонент был объявлен в Face-config.xml.
<managed-bean>
<description>Used for user console functions</description>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>com.web.admin.UserConsoleAction</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
Но когда я удалил эту записьface-config.xml и использовал аннотацию ManagedBean, код для получения экземпляра управляемого компонента из сеанса возвращает значение NULL.
В чем может быть причина этого изменения, поскольку это только часть объявления, измененная с xml на аннотацию.
Аннотация ManagedBean работала нормально, когда расширяется UserAction удаляется. UserAction - это бин области действия запроса, а UserConsoleAction - это область сеанса.