0

编辑:这是一个使用 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。

史蒂夫

4

0 回答 0