Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Dúvida no Ex. 3 da Aula 1 - Configurando primeiro projeto com VRaptor 4

Tenho os seguintes codigos: 1. Controller:

package br.com.caelum.vraptor.controller;

import java.util.List;

import javax.persistence.EntityManager;

import br.com.caelum.vraptor.Controller;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.dao.ProdutoDao;
import br.com.caelum.vraptor.model.Produto;
import br.com.caelum.vraptor.util.JPAUtil;

@Controller
public class ProdutoController {

    @Path("/produto/sobre")
    public void sobre() {

    }

    @Path("/produto/lista")
    List<Produto> lista() {
        EntityManager em = JPAUtil.criaEntityManager();
        ProdutoDao dao = new ProdutoDao(em);
        return dao.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>
<body>
<table>
    <thead>
        <tr>
        <th>Nome</th>
        <th>Valor</th>
        <th>Quantidade</th>
        </tr>
    </thead>

    <tbody>
        <c:forEach items="${produtoList}" var="produto">
            <tr>
                <td>${produto.nome}</td>
                <td>${produto.valor}</td>
                <td>${produto.quantidade}</td>
            </tr>
        </c:forEach>
    </tbody>
</table>

</body>
</html>

Porem, quando acesso a uri: http://localhost:8082/vraptor-produtos/produto/lista , aparece 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

Ainda não achei a solução deste problema! Aguardo a quem puder ajudar

7 respostas

Oi Cremildo, tudo bem? Vamos tentar descobrir!

Qual o caminho do seu arquivo lista.jsp?

O arquivo lista.jsp está no seguinte caminho:

desenvolvimento-web-com-vraptor-4-master/src/main/webapp/WEB-INF/jsp/produto/lista.jsp

O mesmo caminho onde se encontra o arquivo sobre.jsp , o qual compila e executa normalmente. Portanto, o estranho é que o arquivo lista.jsp não executa!

Oi, percebi uma coisa agora... No código que você postou o método lista() não é public. Não tenho certeza se ele obrigatoriamente tem que ser, mas por favor faz mais esse teste.

@Controller
public class ProdutoController {

    @Path("/produto/sobre")
    public void sobre() {

    }

    @Path("/produto/lista")
    public List<Produto> lista() { // alterando para public
        EntityManager em = JPAUtil.criaEntityManager();
        ProdutoDao dao = new ProdutoDao(em);
        return dao.lista();

    }

}

Vê se muda algo. :)

Oi Lucas!

O arquivo lista.jsp está no seguinte caminho:

desenvolvimento-web-com-vraptor-4-master/src/main/webapp/WEB-INF/jsp/produto/lista.jsp

O mesmo caminho onde se encontra o arquivo sobre.jsp , o qual compila e executa normalmente. Portanto, o estranho é que o arquivo lista.jsp não executa!

Oi Cremildo, você já fez a adicionou o public no método lista()?

solução!

Oi lucas!

O problema era justamente do modificador de acesso default, assim que modifiquei para public, as coisas correram ás "maravilhas!". Obrigado, até a próxima

Que bom que funcionou Cremildo! Qualquer dúvida ou problema é só abrir um tópico. Bons estudos!