Oi gente!
Ao clicar o botao adiciona depois de preencher o formulario, lança a seguinte exception:
HTTP Status 500 - net.vidageek.mirror.exception.ReflectionProviderException: Could not invoke method adiciona
type Exception report
message net.vidageek.mirror.exception.ReflectionProviderException: Could not invoke method adiciona
description The server encountered an internal error that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: net.vidageek.mirror.exception.ReflectionProviderException: Could not invoke method adiciona
br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:120)
root cause
net.vidageek.mirror.exception.ReflectionProviderException: Could not invoke method adiciona
net.vidageek.mirror.provider.java.PureJavaMethodReflectionProvider.invoke(PureJavaMethodReflectionProvider.java:45)
net.vidageek.mirror.invoke.MethodHandlerByMethod.withArgs(MethodHandlerByMethod.java:54)
br.com.caelum.vraptor.observer.ExecuteMethod.execute(ExecuteMethod.java:87)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
...
root cause
java.lang.NullPointerException
br.com.caelum.vraptor.controller.ProdutoController.adiciona(ProdutoController.java:52)
br.com.caelum.vraptor.controller.ProdutoController$Proxy$_$$_WeldClientProxy.adiciona(Unknown Source)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
...
Porém, apesar da exception lançada o produtodo é adicionado da lista! Não sei como resolver o problema!
Aqui está a classe ProdutoController:
@Controller
public class ProdutoController {
private final Result result;
public ProdutoController(Result result) {
this.result = result;
}
public ProdutoController() {
this(null);
}
@Get
public void sobre() {
}
@Get
public List<Produto> lista() {
EntityManager em = JPAUtil.criaEntityManager();
ProdutoDao dao = new ProdutoDao(em);
return dao.lista();
}
@Get
public void formulario() {
}
@Post
public void adiciona(Produto produto) {
EntityManager em = JPAUtil.criaEntityManager();
ProdutoDao produtoDao = new ProdutoDao(em);
em.getTransaction().begin();
produtoDao.adiciona(produto);
em.getTransaction().commit();
result.forwardTo(this).lista();
}
@Remove
public void remove(Produto produto) {
EntityManager em = JPAUtil.criaEntityManager();
ProdutoDao produtoDao = new ProdutoDao(em);
em.getTransaction().begin();
produtoDao.remove(produto);
em.getTransaction().commit();
result.forwardTo(this).lista();
}
}