编辑:这是一个使用JSF 2.0的ADF应用程序。
我有一个应用程序范围的托管bean,我在请求范围的bean的托管属性中引用它。尝试访问请求范围bean的PostConstruct方法中的应用程序范围的bean时,我得到一个NullPointerException。我不确定我是否不理解有关应用程序范围的bean何时可用于请求范围的bean的一些基本原理,或者我是否在实现中遇到错误。
App-scoped 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。
史蒂夫