【发布时间】:2017-01-14 23:04:01
【问题描述】:
我正在编写一个 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;
}
}
第二个类是hibernate的拦截器类。程序启动并运行,我确信 PermissionBean 正在构建,因为我正在使用其中的方法,我看到了列表。但是当我尝试从中删除时,onDelete() 函数触发我得到一个空指针异常(在我调用 pb.test() 的那一行)。经过一番尝试,我将测试写入到 setter 中,但该方法从未被调用。
【问题讨论】: