繁体   English   中英

JSF @ManagedProperty没有被注入

[英]JSF @ManagedProperty not being injected

我正在编写一个Web应用程序,并且正在使用JSF 2.0和Hibernate 3.5。 我的问题是,当我想注入未注入的bean时。

这是我要注入的类(我只复制了重要部分):

@ManagedBean(name="permissionBean", eager = true)
@SessionScoped
public class PermissionBean {
    private List<Role> rolesList;
    public PermissionBean(){
        refresh();
    }

    private void refresh(){
        rolesList = Role.queryRolesList();
    }
    public void test(){
        System.out.println("__________TEST ");
    }
//getter setter for the rolesList
}

变成这个:

@ManagedBean(name="triggerBean")
@SessionScoped
public class Trigger extends EmptyInterceptor {

    @ManagedProperty(value="#{permissionBean}")
    public PermissionBean pb;
    public void onDelete(..) {
        pb.test();
    }
    public void setPb(PermissionBean pb) {
        System.out.println("______setting bean");
        this.pb = pb;
    }
}

第二类是休眠的拦截器类。 该程序启动并运行,我确定PermissionBean正在构造中,因为我正在使用其中的方法,并且看到了列表。 但是,当我尝试从中删除它时, onDelete()函数触发了一个空指针异常(在那一行我调用pb.test() )。 经过一番尝试后,我将测试写出到设置器中,但是该方法从未被调用。

我想问题在于eager=true “渴望真实”仅在应用程序范围的Bean中有意义,我不知道它在会话范围的Bean中有什么作用,因为它不是为此而设计的。 但是从您的描述来看,似乎具有以下效果:启动应用程序时正在创建一个对象,但是该对象与您尝试从中访问它的Trigger bean的对象不在同一会话上下文中。 只要未从任何xhtml页中引用PermissionBeanTrigger类内的managedProperty将保持为null

暂无
暂无

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

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