编辑:这是一个使用 JSF 2.0 的 ADF 应用程序。
我有一个应用程序范围的托管 bean,我在请求范围 bean 的托管属性中引用它。尝试在请求范围 bean 的 PostConstruct 方法中访问应用范围 bean 时,我收到 NullPointerException。我不确定我是否不了解有关应用程序范围的 bean 何时可用于请求范围的 bean 的一些基础知识,或者我是否只是在我的实现中有错误。
应用范围的 bean:
@ManagedBean(eager=true)
@ApplicationScoped
public class SecurityApplication {
public String test() {
return "test result";
}
@PostConstruct
public void init() {
System.out.println("In SecurityApplication.init");
}
}
编辑:这在 adfc-config.xml 文件中配置为请求范围的托管 bean。这似乎是问题所在,因为我已指定 bean 由 ADF 管理,但使用了 JSF ManagedProperty 注释。
请求范围的 bean:
public class UserSecurityCompanies {
@ManagedProperty(value="#{securityApplication}")
private SecurityApplication securityApplication;
@PostConstruct
public void init() {
System.out.println("In UserSecurityCompanies.init");
System.out.println("SecurityApp.Test():" + getSecurityApplication().test());
}
public SecurityApplication getSecurityApplication() {
return securityApplication;
}
public void setSecurityApplication(SecurityApplication securityApplication) {
this.securityApplication = securityApplication;
}
}
应用程序范围的 bean 在应用程序部署期间被初始化,但在调用 getSecurityApplication().test() 时会抛出 NPE。
史蒂夫