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

7 respostas
leandrow3b

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

<c:forEach var="atividades" items="${dao.getLista()}">
	
		<li>${atividades.nome}</li>
	
</c:forEach>

Segue meu DAO

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

e meu Modelo

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

}

7 Respostas

Lucas_Cavalcanti

vc recebeu o entityManager no construtor do dao?

leandrow3b

Sim Lucas!

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();
	}
	
}
Adriel

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

leandrow3b

Verdade Adriel

Lucas_Cavalcanti

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

leandrow3b

Lucas, Obrigado… funcionou bacana!

leandrow3b

Lucas, Obrigado… funcionou bacana!

Criado 30 de setembro de 2012
Ultima resposta 1 de out. de 2012
Respostas 7
Participantes 3