繁体   English   中英

ManagedBean访问另一个ManagedBean

[英]ManagedBean accessing another ManagedBean

我可能真的很接近解决方案,但是我是JSF的新手,我看不到我的错误。 我有第一个SessionScoped托管Bean,代表业务信息(地址,网站等)

@Named(value = "businessController")
@SessionScoped
public class BusinessController implements Serializable {
    private Business current;
    @EJB private BusinessFacade ejbFacade;
    ....

我有第二个SessionScoped托管Bean,它代表登录的用户

@Named(value = "loginController")
@SessionScoped
public class LoginController implements Serializable {

    private Login current;
    @EJB
    private LoginFacade ejbFacade;
    @ManagedProperty(value="#{businessController}")
    private BusinessController businessController;

    public BusinessController getBusinessController() {
        return businessController;
    }

    public void setBusinessController(BusinessController businessController) {
        this.businessController = businessController;
    }

当用户登录时,我从loginController设置当前属性,取决于这个当前用户,我想从businessController设置业务属性:

businessController.setCurrent(current.getBusiness());

我的问题是,businessController属性为null!

我使用NetBeans 7.0.1和GlassFish 3.1在调试模式下,可以看到带有值的viewId变量

>No current context (stack frame)<

不幸的是,它对我没有任何影响。

任何帮助,将不胜感激谢谢

您正在将JSF托管bean与CDI托管bean混合在一起。

您的BusinessController用CDI注释@Named注释,但是注入了@ManagedProperty注释(来自JSF)。 CDI管理的bean需要使用@Inject注入。 在这种情况下,不需要吸气剂或吸气剂。 如果您倾向于使用CDI,请确保导入正确的@SessionScoped

CDI:javax.enterprise.context.SessionScoped

JSF:javax.faces.bean.SessionScoped

尝试以下操作(确保导入了正确的作用域类之后):

 @Inject private BusinessController businessController;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM