假设我有一个带有@PostConstruct
方法的JSF bean。
我想知道哪个实体引用了当前bean并导致其初始化。
@PostConstruct
public void init() {
logger.info(... Who initialized me? ...);
}
答案 0 :(得分:3)
此信息在JSF上下文中不可用。如果您正在使用Mojarra,则需要运行调试器并在ManagedBeanBuilder#bake()
方法上设置断点。
或者,如果您在运行时期间因某些非显而易见的原因需要此信息,那么您需要让调用者将自己设置在引用该bean的@ManagedProperty
的setter中。
@ManagedBean
@RequestScoped
public class Parent {
@ManagedProperty("#{child}")
private Child child;
public void setChild(Child child) {
this.child = child;
this.child.setParent(this);
}
// ...
}
然后您可以使用setParent()
方法收集此信息。
public void setParent(Object parent) {
logger.info(parent + " has initialized me");
}