@Named的行为与@ManagedBean不同



我目前正在将一个项目从JBoss 4.2.2迁移到JBoss 6.0.0,我还在CDI中添加依赖注入,并从JSF 1.2迁移到JSF 2.0。我在ejb包和war包中都添加了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(与问题2930889有关(。

现在,当我提交相应xhtml的表单时,字段用户名密码(在JSP中用作#{loginBean.username}(为空。当我改回@ManagedBean时,它工作得很好。

我是不是遗漏了什么?

谨致问候,Sebastian

实际上ee6中现在有两个@SessionScoped注释,@javax.faces.bean.SessionScoped来自jsf 2规范,仅与@ManagedBean一起工作,然后还有来自cdi的@javax.enterprise.context.SessionScoped。我的猜测是,您使用的是jsf注释,而cdi忽略了它,因此cdi创建了您的bean的一个新实例。

相关内容

  • 没有找到相关文章