2

マネージドのコンストラクター内にいて、他の Bean から他のメソッドにアクセスしようとすると、java.lang.NullPointerException. マネージドBeanがそれを行うことを許可しない仕様はありますか?

@ManagedProperty(value="#{document}")
private DisplayListController document;

@EJB
DocumentSBean sBean;

public NewUserController() {
    document.list();
} 

上記では、通常の Bean インジェクションを行うだけで、特別なことは何もありません。を返すだけのメソッドをdocument持つSessionScopedマネージド Bean です。マネージドBeanです。list()StringNewUserControllerRequestScoped

4

2 に答える 2

8

@PostConstructを調べる必要があります 例はここにあります。

あなたがそれらにアクセスしようとしているとき、あなたのプロパティは設定されていません。それらが設定されるのを待つ必要があります。Bean管理は通常、次のようになります。

  1. Beanを作成する
  2. プロパティを設定する

設定されていないプロパティを使用しようとしているため、NPEが発生します。

したがって、コードは次のように変更される可能性があります。

public NewUserController() { }

@PostConstruct
public void init() {
    document.list();
}
于 2010-09-01T15:36:56.300 に答える
0

DisplayListController は、リスト メソッドの @PostConstruct アノテーションを使用して、独自の init メソッドを呼び出すように構成する必要があります。

于 2010-09-01T15:44:42.477 に答える