3

依存関係が注入されていないようですが、コードに何か問題がありますか?

ページ

<p:dataTable styleClass="centralizado" id="cdt" var="c" value="#{indexBean.getCampanhas()}">

IndexBean

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.inject.Inject;

@ManagedBean
@ViewScoped
public class IndexBean {
    @Inject
    private GerenciaContas contas;
    @Inject
    private GerenciaCampanhas campanhas;
    @Inject
    private Conversor conv;

    public List<Campaign> getCampanhas() throws Exception {
        return campanhas.getTodasCampanhas();
    }

    public GerenciaContas getContas() {
        return contas;
    }

    public Conversor getConversor() {
        return conv;
    }

}

私が使用するクラスの1つ:

public class GerenciaCampanhas 
{
    public List<Campaign> getTodasCampanhas() throws Exception {
              //ordinary code
    }
}

Conversorクラスにアノテーションがありませんか?「GerenciaCampanhascampanhas」がnullであるため、NullPointerExceptionが発生し、indexBeanでgetCampanhas()メソッドを呼び出します。ありがとうございます。

4

1 に答える 1

-1
  1. 置換@ManagedBean-JSFマネージドBean@Namedでは使用できません(この質問を参照してください)@Inject
  2. 他のスコープを選択@ViewScopedしてください-CDI管理対象Beanにはそのようなスコープはありません。
  3. ファイルがejbのMETA-INFフォルダーにあることを確認しbeans.xmlます(エンタープライズプロジェクトの場合は、ejbプロジェクトではMETA-INFの下に、WebプロジェクトではWEB-INFの下にあります)。

好き:

import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;
import javax.inject.Inject;
import xxxx.GerenciaContas;

@Named
@SessionScoped
public class IndexBean implements Serializable {
    @Inject
    private GerenciaContas contas;

それでも使用する必要がある場合は、この質問@ViewScopedで説明されているように、プロジェクトにMyFacesCODI拡張機能を追加してください。ブラジルからのご挨拶=)。

于 2013-01-17T15:09:56.957 に答える