0

編集: これは、JSF 2.0 を使用する ADF アプリケーションです。

リクエスト スコープ Bean のマネージド プロパティで参照しているアプリケーション スコープ マネージド Bean があります。リクエスト スコープ Bean の PostConstruct メソッド内でアプリ スコープ Bean にアクセスしようとすると、NullPointerException が発生します。app スコープの Bean が request スコープの 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