Injeção do EntityManager no Vraptor 3 [RESOLVIDO]

Estou com o seguinte problema.

Preciso retornar uma lista de todas as atividades cadastradas em minha tabela, porém deparo com seguinte problema.

Caused by: org.apache.jasper.el.JspELException: /WEB-INF/jsp/index/index.jsp(36,0) ‘${dao.getLista()}’ java.lang.NullPointerException
at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:112)
at org.apache.jsp.WEB_002dINF.jsp.index.index_jsp._jspx_meth_c_005fforEach_005f0(index_jsp.java:138)
at org.apache.jsp.WEB_002dINF.jsp.index.index_jsp._jspService(index_jsp.java:108)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)

Entendo que ele ta me retornando um valor Nullo no getLista(), porem queria saber como funciona a injeção do EntityManager no Vraptor pois acredito que deve ta ai o problema.

Trecho de codigo para exibição dos dados ja JSP

[code]<c:forEach var=“atividades” items="${dao.getLista()}">

	<li>${atividades.nome}</li>

</c:forEach>[/code]

Segue meu DAO

[code]public class AtividadesDAO {

public List<Atividades> getLista() {
	CriteriaBuilder cb = em.getCriteriaBuilder();
	CriteriaQuery<Atividades> consulta = cb.createQuery(Atividades.class);
	Root<Atividades> atividades = consulta.from(Atividades.class);
	consulta.select(atividades);
	return em.createQuery(consulta).getResultList();
}

}[/code]

e meu Modelo

[code]@Entity
@Table(name=“atividades”)
public class Atividades {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)

private int id;
private String nome;
private String descricao;
	
public int getId() {
	return id;
}
public void setId(int id) {
	this.id = id;
}
public String getNome() {
	return nome;
}
public void setNome(String nome) {
	this.nome = nome;
}
public String getDescricao() {
	return descricao;
}
public void setDescricao(String descricao) {
	this.descricao = descricao;
}

}
[/code]

vc recebeu o entityManager no construtor do dao?

Sim Lucas!

[code]public class AtividadesDAO {
private EntityManager em;

public AtividadesDAO(EntityManager em) {
	this.em = em;
}


public List<Atividades> getLista() {
	CriteriaBuilder cb = em.getCriteriaBuilder();
	CriteriaQuery<Atividades> consulta = cb.createQuery(Atividades.class);
	Root<Atividades> atividades = consulta.from(Atividades.class);
	consulta.select(atividades);
	return em.createQuery(consulta).getResultList();
}

}[/code]

Ele esqueceu de mencionar que tá usando o “jsp:useBean” pra pegar o dao.

Verdade Adriel

vc não pode usar o jsp:useBean

ele não vai retornar o dao que o vraptor está gerenciando, por isso o erro…

o ideal na verdade é vc fazer essa chamada ao dao no seu controller:

result.include("lista", dao.getLista());

e usar ${lista} no jsp

Lucas, Obrigado… funcionou bacana!

Lucas, Obrigado… funcionou bacana!