Oi gente!
Ao carregar o servidor http://localhost:8086/vraptor-produtos/produto/lista ,ocorre o seguinte erro:
HTTP Status 404 - /vraptor-produtos/produto/lista
type Status report
message /vraptor-produtos/produto/lista
description The requested resource is not available.
Apache Tomcat/8.0.29
Aqui está o código das minhas classes:
Classe EntityManagerProducer
package br.com.caelum.vraptor.producers;
import javax.enterprise.context.SessionScoped;
import javax.enterprise.inject.Produces;
import javax.persistence.EntityManager;
import br.com.caelum.vraptor.util.JPAUtil;
public class EntityManagerProducer {
@Produces @SessionScoped
public EntityManager producer() {
return JPAUtil.criaEntityManager();
}
}
ProdutoDao
public class ProdutoDao {
private final EntityManager em;
@Inject
public ProdutoDao(EntityManager em) {
this.em = em;
}
@Deprecated
public ProdutoDao() {
this(null);
}
public void adiciona(Produto produto) {
em.getTransaction().begin();
em.persist(produto);
em.getTransaction().commit();
}
public void remove(Produto produto) {
em.getTransaction().begin();
em.remove(busca(produto));
em.getTransaction().commit();
}
public Produto busca(Produto produto) {
return em.find(Produto.class, produto.getId());
}
@SuppressWarnings("unchecked")
public List<Produto> lista() {
return em.createQuery("select p from Produto p").getResultList();
}
}
ProdutoController
@Controller
public class ProdutoController {
private final Result result;
private final ProdutoDao dao;
@Inject
public ProdutoController(Result result, ProdutoDao dao) {
this.result = result;
this.dao = dao;
}
@Deprecated
public ProdutoController() {
this(null, null);
}
@Get
public void sobre() {
}
@Get
public void lista() {
result.include("produtoList", dao.lista());
}
@Get
public void listaEmXml() {
result.use(Results.xml()).from(dao.lista()).serialize();
}
@Get
public void listaEmJson() {
result.use(Results.json()).from(dao.lista()).serialize();
}
@Get
public void formulario() {
}
@Post
public void adiciona(Produto produto) {
dao.adiciona(produto);
result.include("mensagem", "Produto adicionado com sucesso!");
result.redirectTo(this).lista();
}
@Remove
public void remove(Produto produto) {
dao.remove(produto);
result.include("mensagem", "Produto removido com sucesso!");
result.redirectTo(this).lista();
}
}
lista.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Lista de Produtos</title>
</head>
<link rel="stylesheet" type="text/css" href="../bootstrap/css/bootstrap.css">
<link rel="stylesheet" type="text/css" href="../base.css"/>
<body>
<h3>Lista de Produtos</h3>
<table class="table table-stripped table-bordered table-hover">
<thead>
<tr>
<th>Nome</th>
<th>Valor</th>
<th>Quantidade</th>
<th>Remover</th>
</tr>
</thead>
<tbody>
<c:forEach items="${produtoList}" var="produto">
<tr>
<td>${produto.nome}</td>
<td>${produto.valor}</td>
<td>${produto.quantidade}</td>
<td>
<a href="<c:url value='/produto/remove?produto.id=${produto.id}'/>">Remover</a>
</td>
</tr>
</c:forEach>
</tbody>
</table>
<c:if test="${not empty mensagem }">
<div class="alert alert-success">${mensagem}</div>
</c:if>
</body>
<a href="<c:url value='/produto/formulario'/>">Adicionar mais produtos!</a><br/>
<a href="<c:url value='/produto/listaEmXml'/>">Lista em XML</a><br/>
<a href="<c:url value='/produto/listaEmJson'/>">Lista em Json</a><br/>
</html>
Não sei como resolver o problema, por que aparentemente segui todos os passos da aula!