@Named的行为与@ManagedBean不同
我目前正在将一个项目从JBoss 4.2.2迁移到JBoss 6.0.0,我还在使用CDI添加dependency injection,并从JSF 1.2迁移到JSF 2.0。 我将一个beans.xml文件添加到ejb-package以及war-package中。
现在我有一个使用托管bean LoginBean.java
的xhtml页面。 已经在faces-config.xml中配置了bean,如下所示:
Sample description loginBean com.sample.managedbeans.LoginBean session
所以,首先我删除了上面的配置,并将@ManagedBean @SessionScoped
添加到了类本身。 因为我想将CDI添加到项目中,所以我将@ManagedBean
更改@ManagedBean
@Named
(与问题2930889相关 )。
现在,当我提交相应xhtml的表单时,字段username和password (在JSP中用作#{loginBean.username}
)为空。 当我改回@ManagedBean
,它工作正常。
我在这里错过了什么吗?
亲切的问候,塞巴斯蒂安
现在在ee6中实际上有两个@SessionScoped
注释, @javax.faces.bean.SessionScoped
来自jsf 2规范,只能与@ManagedBean
一起工作,然后是来自@javax.enterprise.context.SessionScoped
。 我的猜测是你正在使用jsf注释,cdi会忽略它,因此cdi会创建一个新的bean实例。