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

HTTP Status 404 – Not Found

Boa tarde.

Estou recebendo o erro HTTP Status 404 – Not Found ao acessar o endereço http://localhost:8080/casadocodigo/produtos/form.

No console ele exibe a mensagem do System.out localizado no método form da classe ProdutosController, indicando que esta sendo chamado o método.

Quando eu acesso o endereço http://localhost:8080/casadocodigo/produtos ele exibe a pagina ok.jsp sem nenhum problema, fiz um teste alterando o retorno dos métodos, fazendo com que o método form mande para o ok.jsp e o método gravar para a pagina form.jsp. Depois destas alterações o endereço /produtos exibia a pagina de formulario e o endereço /produtos/form estava dando o erro 404

Acredito que seja algum problema no mapping /produtos/form do controller, mas não sei o que exatamente esta errado. Segue as classes como estão implementadas:

ProdutosController

package br.com.casadocodigo.loja.controllers;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import br.com.casadocodigo.loja.models.Produto;

@Controller
public class ProdutosController {

    @RequestMapping("/produtos/form")
    public String form(){
        System.out.println("[ProdutosController:form] Start");
        return "produtos/form";
    }

    @RequestMapping("/produtos")
    public String gravar(Produto produto) {
        System.out.println("[ProdutosController:gravar] Start");
        System.out.println(produto);
        return "produtos/ok";
    }
}

AppWebConfiguration

package br.com.casadocodigo.loja.conf;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

import br.com.casadocodigo.loja.controllers.HomeController;

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

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

        return resolver;
    }
}
2 respostas

Reparei que ele esta procurando o arquivo no lugar errado, pois na mensagem do erro esta assim:

Message /casadocodigo/produtos/form/WEB-INF/views/produtos/form.jsp

Sendo que na verdade ele deveria procurar em:

WEB-INF/views/produtos/form.jsp

Quando colocamos o retorno, ele deveria inserir entre o prefixo e o sulfixo de acordo com o AppWebConfiguration correto?

solução!

Oi Rodrigo, tudo bem?

Tenta colocar uma barra antes de WEB-INF:

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

Assim ele procura o caminho absoluto e não o caminho relativo do arquivo.

Abraço!