JSF应用程序作用域bean不可注入作为ADF请求作用域bean的托管属性

时间:2015-12-03 16:49:50

标签: jsf-2 nullpointerexception oracle-adf managed-bean managed-property

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

史蒂夫

0 个答案:

没有答案