gpt4 book ai didi

java - @Named 的行为不同于@ManagedBean

转载 作者:行者123 更新时间:2023-11-30 06:34:54 29 4
gpt4 key购买 nike

我目前正在将一个项目从 JBoss 4.2.2 迁移到 JBoss 6.0.0,我还在使用 CDI 添加依赖注入(inject)并从 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 的表单时,字段 usernamepassword (在 JSP 中用作 #{loginBean.username} ) 为空。当我改回 @ManagedBean 时,它工作正常。

我是不是漏掉了什么?

亲切的问候, 塞巴斯蒂安

最佳答案

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

关于java - @Named 的行为不同于@ManagedBean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6581010/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com