我目前正在将项目从JBoss 4.2.2迁移到JBoss 6.0.0,并且还添加了带有CDI的依赖注入,并从JSF 1.2迁移到JSF 2.0。我在ejb-package和war-package中都添加了beans.xml文件。
现在,我有一个使用托管bean LoginBean.java
的xhtml页面。 bean已在faces-config.xml中进行了如下配置:
<managed-bean>
<description>Sample description</description>
<managed-bean-name>loginBean</managed-bean-name>
<managed-bean-class>com.sample.managedbeans.LoginBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
因此,首先我删除了上面的配置,并在类本身中添加了
@ManagedBean @SessionScoped
。因为我想将CDI添加到项目中,所以我将@ManagedBean
更改为@Named
(相对于question 2930889)。现在,当我提交相应的xhtml形式时,用户名和密码(在JSP中用作
#{loginBean.username}
)字段为空。当我改回@ManagedBean
时,它可以正常工作。我在这里想念什么吗?
亲切的问候,
塞巴斯蒂安
最佳答案
ee6中现在实际上有两个@SessionScoped
批注,@javax.faces.bean.SessionScoped
来自jsf 2规范,仅与@ManagedBean
一起使用,然后来自cdi。我的猜测是您正在使用jsf批注,而cdi会忽略它,因此cdi创建了bean的新实例。