gpt4 book ai didi

jsf-2 - @ManagedPropery 和 @PostConstruct 可以放在基类中吗?

转载 作者:行者123 更新时间:2023-12-04 16:54:10 43 4
gpt4 key购买 nike

我正在使用类的层次结构,我最好尝试做的是 @ManagedBean继承了具有 @ManagedProperty 的类的成员(member)和 @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...
}

提前致谢!

最佳答案

@ManagedProperty是继承的,只会以这种方式工作。 @PostConstruct也将被继承,前提是子类本身没有 @PostConstruct方法。即可以只有一个。所以如果子类本身有一个 @PostConstruct ,则不会调用父类(super class)。

因此,如果您覆盖 @PostConstruct在子类中,那么您需要显式调用父类(super class)。

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() {
// ...
}

}

关于jsf-2 - @ManagedPropery 和 @PostConstruct 可以放在基类中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13117839/

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