我目前正在将项目从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的新实例。

08-04 10:19