2013-01-17 47 views
3

它看起来像依赖不是beeing注入,是否有什么问题我的代码?JSF应用程序中的JBoss AS 7.1.1依赖注入

<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; 
    } 

} 

一个我用的是类:

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

我失去了我的Conversor类中的任何注解? 我在我的indexBean 由于得到一个NullPointerException,因为 “GerenciaCampanhas campanhas” 为NULL,则调用方法getCampanhas()

+0

哪些是'@ ManagedBean'和'@ ViewScoped'的软件包? – SJuan76

+0

import javax.faces.bean.ManagedBean; import javax.faces.bean.ViewScoped; – fredcrs

+3

什么是“GerenciaCampanhas”(CDI,EJB,Spring,ManagedBean)?如果您使用CDI,则需要在您的META-INF文件夹中有一个名为'beans.xml'的空文件来启用CDI。 – atamanroman

回答

-1
  1. 通过@Named更换@ManagedBean - 你不能在JSF使用@Inject管理豆(见this question
  2. 选择其他范围比@ViewScoped - 有没有这样的余地CDI托管bean;
  3. 确保您有beans.xml文件在EJB的META-INF文件夹(如果它是一个企业项目,它会在META-INF下的ejb项目和联合国在您的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添加的MyFaces CODI扩展到在此question项目作为解释。来自巴西的问候=)。

+0

-1:你错了。您可以在声明EJB属性之前使用'@ EJB'注释来在JSF 2中注入EJB。根本不需要使用CDI。 –

+0

但是不能像OP那样使用'@Inject',对吗? – kauedg

+1

正如问题所述,我们不确定OP是否真的想使用'@Inject',或者他/她正处于学习阶段并进行一些实验。另一种选择是通过向他们添加“@ Stateless”注释来将'GerenciaCampanhas'(和其他业务逻辑类)转换为EJB,这样'@ ManagedBean'和'@ ViewScoped'注释将保留在托管bean中定义。 –