2
respostas

Erro no acesso ao form de produtos

Boa tarde,

Estou tentando acessar o form de cadastro dos produtos mas a app não esta encontrado a pagina. Minha requisição acessa a controller de produtos e após retornar o caminho do arquivo html ("produtos/form") ocorre o erro HTTP Status 404 - /casadocodigo/produtos/WEB-INF/views/produtos/form.jsp

Percebi que o caminho do erro não esta correto, mas não sei onde a aplicação esta inserindo o contexto /casadocodigo/produtos... antes do WEB-INF.

o form de produto foi criado na estrutura conforme a aula webapp/WEB-INF/views/produtos/form.jsp

Alguém sabe o que esta acontecendo? com esse erro não consigo seguir no curso.

Att,

@EnableWebMvc
@ComponentScan(basePackageClasses= {HomeController.class, ProdutoDAO.class})
public class AppWebConfiguration {

    @Bean
    public InternalResourceViewResolver internalResourceViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("WEB-INF/views/");
        resolver.setSuffix(".jsp");

        return resolver;

    }
}



@Controller
public class ProdutosController {

    @Autowired
    private ProdutoDAO produtoDao;

    @RequestMapping("/produtos/form")
    public String form(){
        System.out.println("entrou na controller de produtos");
        return "produtos/form";
    }

    @RequestMapping("/produtos")
    public String gravar(Produto produto) {
        produtoDao.gravar(produto);
        return "produtos/ok";
    }
}

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Livros de Java, Android, iPhone, PHP, Ruby e muito mais - Casa do Código</title>
</head>
<body>
    <form action="/casadocodigo/produtos" method="post">
        <div>
            <label>Título</label> <input type="text" name="titulo" />
        </div>
        <div>
            <label>Descrição</label>
            <textarea rows="10" cols="20" name="descricao"></textarea>
        </div>
        <div>
            <label>Páginas</label> <input type="text" name="paginas" />
        </div>
        <button type="submit">Cadastrar</button>
    </form>
</body>
</html>
2 respostas

Oi Gean, tudo bem? O erro acontece depois de você fazer o submit? Se for, o problema pode ser nessa action que está com /casadocodigo/produtos.

Olá, Geancarlo, blz?

Eu também estava tendo o mesmo problema e pesquisando aqui no fórum encontrei a solução para o nosso problema.

Na linha "resolver.setPrefix("WEB-INF/views/")" da classe AppWebConfiguration, coloque um / antes de WEB-INF.

De:

resolver.setPrefix("WEB-INF/views/")

Para:

resolver.setPrefix("/WEB-INF/views/");

Com isso você conseguirá acessar a tela do formulário. Só não sei te explicar como que a falta dessa barra resulta nesse problema.

Essa dica foi dada pelo Rafael no link https://cursos.alura.com.br/forum/topico-servidor-nao-encontra-a-pagina-do-formulario-63698