我正在使用类的层次结构,我最好尝试做的是@ManagedBean
继承一个具有@ManagedProperty
成员和@PostConstruct
方法的类。
具体来说,这会有用吗? :
public class A {
@ManagedProperty
private C c;
@PostConstruct
public void init() {
// Do some initialization stuff
}
public C getC() {
return c;
}
public void setC(C c) {
this.c = c;
}
}
@ManagedBean
@SessionScoped
public class B extends A {
// Content...
}
提前致谢!
答案 0 :(得分:13)
@ManagedProperty
是继承的,只会以这种方式工作。如果子类本身没有@PostConstruct
方法,@PostConstruct
也将被继承。可能只有一个。因此,如果子类本身具有@PostConstruct
,那么将不会调用超类“one”。
因此,如果覆盖子类中的@PostConstruct
,那么您需要显式调用超类'one。
public class SuperBean {
@PostConstruct
public void init() {
// ...
}
}
@ManagedBean
public class SubBean extends SuperBean {
@PostConstruct
public void init() {
super.init();
// ...
}
}
或者,提供一个子类必须实现的抽象方法(没有@PostConstruct
!)。
public class SuperBean {
@PostConstruct
public void superInit() {
// ...
init();
}
public abstract void init();
}
@ManagedBean
public class SubBean extends SuperBean {
@Override
public void init() {
// ...
}
}